Я использую django 2.1
и python 3.6
и сталкиваюсь с проблемой, которая выглядит так: другие люди столкнулись в последние годы.
Это часть моего views.py
:
def blog_list_by_cat(request, cat_id, cat_name):
...
def blog_list_by_genre(request, genre_id, genre_name):
...
Это мой urls.py
:
urlpatterns = [
path('', views.index, name='index'),
re_path(r'^blog/(?P<blog_id>\d+)/(?P<slug>[^/]+)/?$', views.single_blog, name='single_blog'),
re_path(r'^blog-list/(?P<cat_id>\d+)/(?P<cat_name>[^/]+)/?$', views.blog_list_by_cat, name='blog_list_by_cat'),
path('blog-list/latest/', views.blog_latest, name='blog_latest'),
re_path(r'^blog-list/genre/(?P<genre_id>\d+)/(?P<genre_name>[^/]+)/?$', views.blog_list_by_genre, name='blog_list_by_genre'),
]
и в моем шаблоне, когда я вызываю эти ссылки, эта работает нормально:
{% for cat in cat_list %}
<a class="dropdown-item" href="{% url 'blog_list_by_cat' cat_id=cat.id cat_name=cat.cat %}">{{ cat.cat }}</a>
{% endfor %}
Пока этот выдает ошибку в том же шаблоне:
{% for genre in genre_list %}
<li><a class="dropdown-item" href="{% url 'blog_list_by_genre' genre_id=genre.id genre_name=genre.title %}">{{ genre.title }}</a></li>
{% endfor %}
Это полная ошибка:
Тип исключения: NoReverseMatch
Значение исключения: обратное для 'blog_list_by_genre' с аргументами ключевого слова '{' genre_id ':
5, 'genre_name': 'Action'} 'не найден. 1 шаблон (ы) пробовал:
[ 'Блог-лист / жанр / (? P \ d +) / (? P [^ /] +) /? $']
Как видите, я использую с именами URL , и я использую кавычки вокруг имени URL, а не добавляю имя приложения в URL. оба кода одинаковы. Но почему не работает второй?