Создание динамической формы 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'),