'how to add slug argument to url in django?
I want to add slug in url using django like this <a href="{% url 'tutorials:tutorial' topic.tutorial_category.slug topic.tutorial_topic_category.slug topic.slug %} </a> i dont really know how to pass in triple slug in the url for example: i want to access the programming > html > introduction-to-html like this 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 topics %}
<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 topic(request, main_category_slug, topic_category_slug):
tutorial_category = TutorialCategory.objects.get(slug=main_category_slug)
tutorial_topic_category = TutorialTopicCategory.objects.get(slug=topic_category_slug)
topics = Topic.objects.filter(tutorial_topic_category=tutorial_topic_category)
context = {
'topics':topics,
}
return render(request, 'tutorials/topic.html', context)
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)
topics = Topic.objects.filter(tutorial_topic_category=tutorial_topic_category)
tutorial = Topic.objects.get(slug=tutorial_slug)
context = {
'topics':topics,
'tutorial':tutorial,
}
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("<slug:main_category_slug>/<slug:topic_category_slug>/<slug:tutorial_slug>/", views.tutorial, name='tutorial'),
models.py
class TutorialCategory(models.Model):
title = models.CharField(max_length=1000)
slug = models.SlugField(unique=True)
active = models.BooleanField(default=True)
class TutorialTopicCategory(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
tutorial_category = models.ForeignKey(TutorialCategory, on_delete=models.CASCADE, null=True)
title = models.CharField(max_length=1000)
slug = models.SlugField(unique=True)
class Topic(models.Model):
tutorial_topic_category = models.ForeignKey(TutorialTopicCategory, on_delete=models.CASCADE, null=True)
title = models.CharField(max_length=10000)
slug = models.SlugField(unique=True)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
