Django: Проблема с передачей параметров из шаблона {% url %} в представление
У меня такой urlpath:
path('download/<str:fpath>/<str:fname>', views.download, name='download'),
А это вид:
def download(request, fpath, fname):
# some code
В шаблоне у меня есть тег href, и я хочу передать эти строки в качестве аргументов в представление download
.
<a href="{% url 'download' 'lms/static/lms/files/homework/Math 1/3/3' 'hmm.pdf' %}">click me</a>
Но я получаю эту ошибку:
NoReverseMatch at /
Reverse for 'download' with arguments '('lms/static/lms/files/homework/Math 1/3/3', 'hmm.pdf')' not found. 1 pattern(s) tried: ['download/(?P<fpath>[^/]+)/(?P<fname>[^/]+)\\Z']
Как я могу это исправить?
Аргументы URL типа str
не могут содержать символы /
. Вы можете увидеть это в сообщении об ошибке, которое перевело ваш <str:fpath>
в regex:
tried: ['download/(?P<fpath>[^/]+)/(?P<fname>[^/]+)\\Z']
Для вашего случая следует использовать конвертер path
(см. здесь).
Например:
path('download/<path:fpath>/<str:fname>', ...)