【问题标题】:Django view function for navbar included包含导航栏的 Django 视图功能
【发布时间】:2026-02-07 14:20:03
【问题描述】:

我的页面仅用于导航栏,并将其包含在基本页面中。现在我在导航栏中有一个菜单和从数据库中获取的链接(链接是我的类别)。

但是我如何在没有路径的视图中调用我的函数,因为我不需要导航栏的路径?我需要那个视图函数来从数据库中获取数据。

models.py

class Item(models.Model):
title = models.CharField(max_length=100)
price = models.FloatField()
discount_price = models.FloatField(blank=True, null=True)
category = models.CharField(choices=CATEGORY_CHOICES, max_length=2)
label = models.CharField(choices=LABEL_CHOICES, max_length=1)
slug = models.SlugField()
description = models.TextField()
info = models.TextField(default="Informacion a Completar")
image = models.ImageField(blank=True)

views.py

def CategoryView(request):
context = {
    'items' : Item.objects.all()
} 

return render(request, 'categories_bar.html', context=context)

categories_bar.html

<li class="nav-item"></li>
  {% for category in items %}
  <div> {{ category.category }} </div>
  {% endfor %}
 </li>

base.html

{% include "categories_bar.html" %}

【问题讨论】:

  • 你的意思是在没有模板中的url的情况下调用CategoryView
  • 如果有其他方法,不完全调用CategoryView,但主要目标是创建一个for循环来创建一个包含category = models.CharField中所有类别的导航栏。但是导航栏包含在base.html 模板中,因此导航栏存在于所有网址中。
  • 我认为在for循环中应该是{{ category.category }}
  • 不错,我改了,还是没有结果。

标签: django templates view model navbar


【解决方案1】:

你可以像这样使用块标签:

base.html:

<nav>
  <ul>
  {% block categories %}{% endblock %}
  </ul>
</nav>
<!-- replace navbar code with yours -->

categories_bar.html:

{% block categories %}
   {% for category in items %}
     <li class="nav-item"></li>
        <div> {{ category.category }} </div>
     </li>
   {% endfor %}
{% endblock %}

【讨论】:

  • @mauriciogoette 如果这有助于解决您的问题,请将答案标记为已接受。