Django Шаблон ввода второй формы вызывает неправильный просмотр - PullRequest
0 голосов
/ 26 мая 2020

Попытка разместить две формы на одной странице и попросить пользователя выбрать ввод для создания или загрузки. Должно быть довольно просто. Кажется, не работает. Каждый раз, когда я нажимаю «Выбрать человека» и «Загрузить», он оценивает первый URL-адрес для создания. Может кто-нибудь указать, что мне не хватает? Я уверен, что это что-то простое.

Просмотры:

def Create(request):
    print('Create View')

def Load(request):
    print('Load View')

URL-адреса:

urlpatterns = [
    path('', views.Index, name='index'),
    path('person/', views.Create, name='Create'),
    path('person/', views.Load, name='Load'),

Шаблон:

{% block body_main %}
<form action={% url 'Create' %} method='POST'>
<h2>Name</h2>
    {% csrf_token %}
    {{ form1 }}
<input class="btn btn-success" name="form1btn" value="Submit" type="submit"/>
</form>
<br>
<form action={% url 'Load' %} method='POST'>
<h2>Select Existing Name</h2>
    {% csrf_token %}
    {{ form2 }}
<input class="btn btn-success" name="form2btn" value="Submit" type="submit"/>
<form>
{% endblock %}

1 Ответ

0 голосов
/ 26 мая 2020

Вот проблема (также упоминается в пункте 3 в Django Документы URL :

 path('person/', views.Create, name='Create'),
 path('person/', views.Load, name='Load'),

Каждый раз django URL-сопоставитель попадает сюда, обычно он попадает Create сначала и возврат.

Django проходит по каждому шаблону URL по порядку и останавливается на первом, который соответствует запрошенному URL, сопоставляясь с path_info.

Таким образом, он всегда будет возвращать вид Create.

Чтобы решить эту проблему, я предлагаю создать 3 отдельных URL-адреса, которые более читабельны:

 path('person/new', views.Create, name='Create'),
 path('person/load', views.Load, name='Load'),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...