亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django Python - 在公共標頭中添加表值

Django Python - 在公共標頭中添加表值

尚方寶劍之說 2023-07-11 16:56:32
也許嘗試做一些不可能的事情,但基本上,我創建了一個文件 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。


查看完整回答
反對 回復 2023-07-11
  • 1 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號