Django Динамический URL из форм
TL;DR - Я слишком долго не мог реализовать динамические урлы. Мой план таков: Каждый раз, когда форма отправляется, она перенаправляет вас на страницу (с pk в качестве url), которая суммирует ваш выбор.
Я знаю, что этот вопрос задавался много раз, и я смог прекрасно реализовать динамические URL в новом проекте. Однако мой текущий проект просто не имеет для меня никакого смысла.
У меня есть простая форма с CharField в качестве полей. Она рендерит их из файла Models, который утверждает практически то же самое.
Я добавил в Models.py:
> task_id = models.AutoField(primary_key=True)
Форма находится внутри "hunting.html", и доступ к ней осуществляется через навигационную панель:
> <a class="nav-link {% if 'hunting' in segment %} active {% endif %}" href="/hunting.html">
Моя точка зрения довольно проста, недавно я перешел на Class-based (при использовании function-base это работало не так хорошо):
app/views.py
class Hunting(LoginRequiredMixin, View):
def get(self, request):
form = HuntForm()
print('Access Hunting')
return render(request, 'home/hunting.html', {'form': form})
def post(self, request):
form = HuntForm(request.POST, request.FILES)
name = request.POST['name']
limit = request.POST['limit']
os = request.POST.getlist('os')
mal = request.POST.getlist('mal')
my_type = request.POST.getlist('my_type')
if form.is_valid():
form.save()
print('Hunt information is saved')
return redirect('home/index.html')
return redirect('home/index.html')
app/urls.py:
path('', views.index, name='home'),
path('hunting.html', views.Hunting.as_view(), name='hunting'),
# Matches any html file - this means that you only need to create a HTML page, and it registers it.
re_path(r'^.*\.*', views.pages, name='pages'),
Что я пытаюсь сделать? Каждый раз, когда форма отправляется, она перенаправляет вас на страницу (с pk в качестве url), которая суммирует ваш выбор.
Я пробовал много решений (я считаю, что моя реализация была неправильной): 1:
- Создали URL:
path('hunting/<int:pk>', views.Hunting.as_view(), name='hunting-task'),
- Перенаправляет мой взгляд на url 'hunting-task'.
2:
- Создал отдельное представление и HTML, которое запрашивало подтверждение пользователя для формы и затем выполняло отдельное представление. К сожалению, я запутался настолько, что вернулся назад.
3:
- Склоняемся к представлениям на основе классов, все еще не удается реализовать.
Основываясь на том, что вы видите, есть ли способ реализовать то, что я пытаюсь сделать?
Что я пытаюсь сделать? Каждый раз, когда форма отправляется, она перенаправляет вас на страницу (с pk в качестве url), которая суммирует ваш выбор.
.
E.g.:
- Пользователь обратился к файлу 'hunting.html'.
- Пользователь ввел информацию в поля формы.
- Данные передаются в шаблон с динамическим url: "localhost:80/hunting/1" .
Заранее спасибо, надеюсь, это достаточно понятно.