我找不到问题所在,因此我想为我的每个类别创建li元素。这是我的代码:
views.py:
def categories(request):
context = {
'category_list': Category.objects.all(),
}
return render(request, 'base.html', context)
base.html:
<nav id="header-nav">
<ul id="nav-ul" class="menu font-reg clearfix">
<li class="menu-item menu-item-has-children">
<a href="">Blog<span class="sub-drop-icon fa fa-angle-down"></span></a>
<ul class="sub-menu sub-menu-first">
{% for category in category_list %}
<li><a href="#">{{ category.name }}</a></li>
{% endfor %}
</ul>
</li>
<li class="menu-item menu-item-has-children">
<a href="about-1.html">About</a>
</li>
<li class="menu-item menu-item-has-children">
<a href="contact-1.html">Contact</a>
</li>
</ul>
</nav>
urls.py:
urlpatterns = [
path('', views.index),
path('article/<slug:article_slug>', views.article, name='article'),
]
类别:
class Category(models.Model):
def __str__(self):
return self.name
name = models.CharField(max_length=20)
答案 0 :(得分:0)
要在同一页面上显示文章和类别,可以执行以下操作:
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' %}
页面来呈现您的文章将更具意义。
此外,请注意Class-based views的简单渲染列表和有关模型实例的详细信息。