Django Python - 在公共标头中添加表值

也许尝试做一些不可能的事情,但基本上,我创建了一个文件 header.html,其中包含所有其他 html 页面,例如 {% include "project/header.html" %} 这工作正常,挑战在于 header.html 我想要放置一个包含来自模型的值的下拉菜单。如果我直接调用 header.html 它工作正常,但在其他页面内则不行。


header.html


...

<ul>

{% for club in clubs.all %}

<li> <a href="#">{{ club.name }}</a></li>

{% endfor %}

...

views.py


from django.http import HttpResponse

from django.shortcuts import render


from .models import Club

def index(request):

    clubs = Club.objects

    return render(request, 'project/index.html',{'clubs':clubs})

这可能吗?提前致谢


尚方宝剑之说
浏览 78回答 1
1回答

动漫人物

您可以为此编写一个上下文处理器[Django-doc] 。这是每次添加到请求中的方法。在应用程序(您使用的任何应用程序)中,您可以定义上下文处理器:# app/context_processors.pydef all_clubs(request):    from app.models import Club    return {        'clubs': Club.objects.all()    }然后在文件中注册此上下文处理器settings.py,以便在每次render(…)调用时将其添加到上下文中:# settings.py# …TEMPLATES = [    {        # …        'OPTIONS': {            'context_processors': [                # …                'app.context_processors.all_clubs'            ]        }        # …    }]现在您不再需要传入clubs每个渲染调用。它将自动添加。由于QuerySets 是惰性的,如果您的模板不使用 s ,它将不会访问数据库clubs。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python