也許嘗試做一些不可能的事情,但基本上,我創建了一個文件 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.pyfrom django.http import HttpResponsefrom django.shortcuts import renderfrom .models import Clubdef index(request): clubs = Club.objects return render(request, 'project/index.html',{'clubs':clubs})這可能嗎?提前致謝
1 回答

動漫人物
TA貢獻1815條經驗 獲得超10個贊
您可以為此編寫一個上下文處理器[Django-doc] 。這是每次添加到請求中的方法。
在應用程序(您使用的任何應用程序)中,您可以定義上下文處理器:
# app/context_processors.py
def 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。
添加回答
舉報
0/150
提交
取消