正在将iterable对象发送到基模板(例如:“menus=Menu.objects.all全部() ')

2024-04-28 06:10:39 发布

您现在位置:Python中文网/ 问答频道 /正文

当我发送

menus = Menu.objects.all()

通过渲染

render(request, 'index.html', {'menus': menus})

它没有给我看任何东西,只是一页空白 但其他变量如

info = Info.objects.last()

工作正常

这是视图.py你知道吗

''这里有些代码''

def home(request):
    slides = Slide.objects.order_by('created')[:3]
    main_articles = MainArticle.objects.order_by('created')[:5]
    last_news = News.objects.all()[:4]
    info = OtherInfo.objects.last()
    promo = Promo.objects.last()
    menus = Menu.objects.all()

    return render(request, 'index.html', {'slides': slides,
                                        'main_articles': main_articles,
                                        'last_news': last_news,
                                        'info': info,
                                        'promo': promo,
                                        'menus': menus
                                        })

这是型号.py你知道吗

class Menu(models.Model):
    name = models.CharField(max_length=100)
    created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

    class Meta:
        ordering = ('created',)


class SubMenu(models.Model):
    menu = models.ForeignKey(Menu, related_name='sub_menu')
    name = models.CharField(max_length=100)
    created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return '{} -> {}'.format(self.menu, self.name)

    class Meta:
        ordering = ('created',)

“这里有其他的模特”

这是索引.html你知道吗

{% extends 'base.html' %}  

{% block nav_bar %}
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
    <ul class="nav navbar-nav">
    {% for m in menus.all %}
     {% if m.sub_menu %}
       <li class="dropdown">
       <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ m.name }}<span class="caret"></span></a>
         <ul class="dropdown-menu">
         {% for sub in m.sub_menu.all %}
         <li><a href="{% url 'info-ms' menu=m.name submenu=sub.name %}">{{ sub.name }}</a></li>
          {% endfor %}
         </ul>
       </li>
     {% else %}
       <li>
       <a href="{% url 'info-m' menu=m.name %}">{{ m.name }}</a>
       </li>
     {% endif %}
   {% endfor %}
  </ul>
</div><!-- /.navbar-collapse -->
{% endblock %}

Tags: nameselfinfoobjectsmodelshtmlliall
1条回答
网友
1楼 · 发布于 2024-04-28 06:10:39

如果通过:

menus = Menu.objects.all()

您可以在模板中使用:

{% for menu in menus %}
...

    {% if menu.sub_menu.exists %}
        {% for submenu in menu.sub_menu.all %}
        ....

您已经在视图中调用了.all()。你知道吗

相关问题 更多 >