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>', ...)
Вернуться на верх