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

Django Python-在公共头中添加表值,python,html,django,django-models,django-views,Python,Html,Django,Django Models,Django Views,可能试图做一些不可能的事情,但基本上,我创建了一个文件header.html,其中包括所有其他html页面,例如{%include“project/header.html”%} 这很好。挑战在于,在header.html上,我想放置一个下拉菜单,其中包含来自模型的值。如果我直接调用header.html,但不在其他页面内调用,则效果很好 header.html ... <ul> {% for club in clubs.all %} <li> <a href=&qu

可能试图做一些不可能的事情,但基本上,我创建了一个文件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 %}
...
这可能吗? 提前感谢

您可以为此写一封信。这是一个每次添加到请求中的方法

在应用程序(您使用的任何应用程序)中,您可以定义上下文处理器:

# app/context_processors.py

def all_clubs(request):
    from app.models import Club
    return {
        'clubs': Club.objects.all()
    }

现在,您不再需要在每次渲染调用中传递
clubs
。它将自动添加。由于
QuerySet
s是惰性的,如果您的模板不使用
clubs

非常感谢Willem。问题解决了。我一定要继续阅读Python文档!!
# app/context_processors.py

def all_clubs(request):
    from app.models import Club
    return {
        'clubs': Club.objects.all()
    }
# settings.py

# …

TEMPLATES = [
    {
        # …
        'OPTIONS': {
            'context_processors': [
                # …
                'app.context_processors.all_clubs'
            ]
        }
        # …
    }
]