Как добавить аргумент slug к url в django?
я хочу добавить slug в url используя django вот так <a href="{% url 'tutorials:tutorial' topic.tutorial_category.slug topic.tutorial_topic_category.slug topic.slug %} </a> я не знаю как передать тройной slug в url например: я хочу получить доступ к programming > html > introduction-to-html вот так http://127.0.0.1:8000/tutorial/programming/html/introduction-to-html
error
Reverse for 'tutorial' with arguments '('', 'html', 'introduction-to-html')' not found. 1 pattern(s) tried: ['tutorial/(?P<main_category_slug>[^/]+)/(?P<topic_category_slug>[^/]+)/(?P<tutorial_slug>[^/]+)$']
topic.html
{% for topic in topic %}
<a href="{% url 'tutorials:tutorial' topic.tutorial_category.slug topic.tutorial_topic_category.slug topic.slug %}">{{topic.title}} - Start Now</a>
{% endfor %}
views.py
def tutorial(request, main_category_slug, topic_category_slug, tutorial_slug):
tutorial_category = TutorialCategory.objects.get(slug=main_category_slug)
tutorial_topic_category = TutorialTopicCategory.objects.get(slug=topic_category_slug)
topic = Topic.objects.filter(tutorial_topic_category=tutorial_topic_category)
tutorial = Topic.objects.get(slug=tutorial_slug)
# Getting all topics
context = {
'topic': topic,
'tutorial':tutotial,
}
return render(request, 'tutorials/tutorial.html', context)
urls.py
path("<slug>", views.tutorial_topic_category, name='tutorial-topic-category'),
path("<slug:main_category_slug>/<slug:topic_category_slug>", views.topic, name='topic'),
path("<main_category_slug>/<topic_category_slug>/<tutorial_slug>", views.tutorial, name='tutorial'),
``
По умолчанию, если вы ничего не указываете в маршруте при определении в path(), то вы указываете "<main_category_slug>/<topic_category_slug>/<tutorial_slug>", поэтому они считаются строками.
Например: <str:name>/ и <name>/ - одно и то же.
Если вы хотите сделать слизни все три, то сначала определите их как слизни, напишите ваш маршрут как "<slug:main_category_slug>/<slug:topic_category_slug>/<slug:tutorial_slug>/", тогда они будут считаться слизнями.
Малая ошибка: Вы не должны определять одинаковые переменные, это должно быть for topic in topics, а не .for topic in topic
Note:Всегда давайте/в конце каждого маршрута.