Django не может выполнить обратное сопоставление url из шаблона
У меня возникают трудности с обратным сопоставлением url, получаю ошибку:
NoReverseMatch at /patient/46cb4bd5-ef39-4697-84ff-9aa2b6e85e6b/
Reverse for 'treatment_detail' with no arguments not found. 1 pattern(s) tried: ['patient/(?P<patient_id>[^/]+)/$']
Урл:
/patient/46cb4bd5-ef39-4697-84ff-9aa2b6e85e6b/
(строка является 'apatient_id' и меняется каждый раз, когда пользователь отправляет страницу 'add')
urls.py is
app_name = "patient"
urlpatterns = [
path(
route='add/',
view=views.PatientAddView.as_view(),
name="patient_add"),
path(
route='<patient_id>/',
view=views.TreatmentTemplateView.as_view(),
name='treatment_detail'),
]
html
<form action="{% url 'patient:treatment_detail' %}" method="get">
<input type="submit" class="btn btn-primary" value="get_doc" name="get_doc">
</form>
views.py
Если у меня есть 'patient:patient_add' вместо 'patient:treatment_detail', то все работает нормально, так что проблема, похоже, в том.
route="<patient_id>"/
В urls.py
Ваш url-маршрут должен включать patient_id
такой, что:
path(
route='<uuid:patient_id>/',
view=views.TreatmentTemplateView.as_view(),
name='treatment_detail'),
Я предполагаю, что вы используете поле uuid
в вашей модели.
Вы можете взглянуть на docs для получения более подробной информации.
В вашем шаблоне вы также должны передать поле uuid
в тег шаблона:
"{% url 'patient:treatment_detail' patient.patient_id %}"