Не мога да използвам {% url%} за генериране на URL адреси в шаблоните на Django. Получавам следната грешка:
Reverse for "category" with arguments "()" and keyword arguments "{"category_name_slug": ""}" not found. 1 pattern(s) tried: ["rango/category/(?P<category_name_slug>[\w\-]+)/$"]
Така използвам етикета:
{% url "rango:category" category_name_slug=category.slug %}
Това е относителната дефиниция на url ():
url(r"^category/(?P<category_name_slug>[w-]+)/$", views.category, name="category")
Смешното е, че ако използвам категория.документ за самоличност вместо шлаух тя работи, но разбира се генерираният URL адрес не е от никаква категория, тъй като в изгледа се очаква "slug", а не id.
Още по-странно, ако използвам етикета като
{% url "rango:category" category_name_slug=category.slug as slug %}
{{ slug }}
тогава генерираният URL адрес е правилен и няма повдигнати грешки.
Четенето на грешката изглежда, че нищо не се предава като аргументи за ключови думи.
Някаква идея?
Отговори:
1 за отговор № 1Ключовата част от съобщението за грешка е
"{"category_name_slug": ""}"
Това подсказва, че или не сте предали категорията на шаблона правилно, или имате категория, която няма набор от шлауги.
Казвате, че използвате category.id
не предизвиква грешка, което означава, че предавате категорията на шаблона правилно.
Затова най-вероятно имате категория, която няма набор от шлауги. Проверете стойностите в базата данни.