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.:

  1. Пользователь обратился к файлу 'hunting.html'.
  2. Пользователь ввел информацию в поля формы.
  3. Данные передаются в шаблон с динамическим url: "localhost:80/hunting/1"
  4. .

Заранее спасибо, надеюсь, это достаточно понятно.

Вернуться на верх