Создание динамической формы URL действия в Django python

когда я отправляю форму, она переводит меня на страницу testformresult, например https://www.studnentdetail.com/student/testformresult, но я хочу, чтобы когда кто-то вводит имя студента на странице form.html, данные этого студента извлекались из базы данных mysql и отображались на другой странице, например https://www.studentdetail.com/student/<имя_студента>. Также я хочу знать, как на многих железнодорожных сайтах, когда мы ищем конкретный поезд, например 10029, то на следующей странице он показывает url что-то вроде https://www.train/10029-running-status.

form.html

<form method="POST" action="{% url 'testformresult' %}">

    <label for="fname">First Name</label>
    <input type="text" id="fname" name="firstname" placeholder="Your name..">

    <input type="submit" value="Submit">
  </form>

views.py

def testform(request):
    return render(request, 'testform.html')

def testformr(request):
    fname = request.POST.get('firstname')
    return render(request, 'testformresult.html')

urls.py

path('testform', views.testform, name='testform'),
path('student/testformresult/<slug:student>', views.testformresult, name='testformresult'),

вы можете попробовать сделать это с помощью редиректа: (и подумайте об использовании CSRF-токена и включении CsrfViewMiddleware ... см. django docs https://docs.djangoproject.com/en/4.0/ref/csrf/ !!!)

form.html

<form method="POST">

    {% csrf_token %}    

    <label for="fname">First Name</label>
    <input type="text" id="fname" name="firstname" placeholder="Your name..">

    <input type="submit" value="Submit">
  </form>

views.py

def testform(request):
    if request.method == 'POST':
       ....
       fname = request.POST.get('firstname')
       return redirect('testformresult', student=fname)

    return render(request, 'testform.html')

urls.py

path('testform', views.testform, name='testform'),
path('student/testformresult/<slug:student>', views.testformresult, name='testformresult'),
Вернуться на верх