Чтобы отобразить статью и категории на одной странице, вы можете сделать следующее:
urls.py
urlpatterns = [
path('', views.index),
path('article/<slug:article_slug>', views.article, name='article'),
]
models.py
Лучше поставить def __str__
ниже всех полей.
class Category(models.Model):
name = models.CharField(max_length=20)
def __str__(self):
return self.name
views.py
Вам нужно передать статью и категории в одном представлении.
def article(request, slug):
context = {
'article': Article.objects.get(slug=slug),
'category_list': Category.objects.all()
}
return render(request, 'base.html', context)
base.html
Показать список категорий:
{% for category in category_list %}
<li><a href="#">{{ category.name }}</a></li>
{% endfor %}
Примечание:
Будет гораздо больше смысла создать отдельную страницу article.html
со строкой {% extends 'base.html' %}
в начале для отображения вашей статьи.
Кроме того, обратите внимание на представления на основе классов для простых списков рендеринга и подробную информацию для экземпляров ваших моделей.