Неоднозначное поведение контекстной переменной django при создании url в шаблоне с помощью тега url
Я передаю контекстную переменную review_id
в приведенной ниже функции просмотра шаблону. Предполагается, что контекстная переменная будет использоваться при построении url с помощью шаблонного тега url.
views.py
def report_pdf(request, review_id):
return render(request, 'mtsAuthor/report.html', {
'review_id': review_id
})
report.html
<a href='{% url "mtsAuthor:Review" review_id %}'>Link</a>
Страница report.html отображается правильно, и url также генерируется нормально. В моем случае урл будет выглядеть как /report/report_pdf/8fd9caac-1bae-45eb-af9d-b9673c17c0f8/
. Путь к соответствующему url имеет вид path('report/report_pdf/<uuid:review_id>/', views.report_pdf, name='report_pdf')
Но при переходе по ссылке возникает следующая ошибка:
Отзыв для 'download_review_report_pdf' с аргументами '('',)' не найдено.
Чтобы решить эту проблему, необходимо убедиться, что URL правильно построен перед использованием. Присвоив URL переменной в шаблоне, а затем используя эту переменную в ссылке, я смог избежать этой ошибки.
review_report.html
{% url 'myApp:download_report_pdf' custom_review_id as download_url %}
<a href="{{ download_url }}" class="btn btn-secondary btn-sm">Link</a>