我有一個顯示我的導航欄的視圖,我正在從資料庫中動態添加導航欄,但問題是我必須將同一段代碼添加到我的所有視圖中才能顯示導航文本,這就是我的代碼這么長,有沒有辦法自動擴展讓我導航到所有視圖的代碼片段,所以當我轉到另一個頁面(如關于頁面或聯系人或個人資料頁面)時,我仍然可以看到導航欄. 現在只有當我看到導航欄時才去 index.html
視圖.py
def index(request):
designcatlist = DesignCategory.objects.all()
prglangcatlist = ProgrammingLanguagesCategory.objects.all()
howtocatlist = HowToCategory.objects.all()
context = { ... }
def about_page(request):
designcatlist = DesignCategory.objects.all()
prglangcatlist = ProgrammingLanguagesCategory.objects.all()
howtocatlist = HowToCategory.objects.all()
context = { ... }
def contact_page(request):
designcatlist = DesignCategory.objects.all()
prglangcatlist = ProgrammingLanguagesCategory.objects.all()
howtocatlist = HowToCategory.objects.all()
context = { ... }
def profile_page(request):
designcatlist = DesignCategory.objects.all()
prglangcatlist = ProgrammingLanguagesCategory.objects.all()
howtocatlist = HowToCategory.objects.all()
context = { ... }
注意 正如您在上面的代碼中看到的,我需要添加相同的代碼以使導航顯示在這些頁面上。
uj5u.com熱心網友回復:
我認為您可以使用自定義背景關系處理器將所有這些資料添加到您的模板中。例子:
import models
def index(request):
"""Custom context processor."""
designcatlist = DesignCategory.objects.all()
prglangcatlist = ProgrammingLanguagesCategory.objects.all()
howtocatlist = HowToCategory.objects.all()
return {
'designcat': designcatlist,
'prglangcat': prglangcatlist,
'howtocat': howtocatlist,
}
在創建它或它們之后(因為您可以只創建一個包含所有資料或幾個:每個函式一個)只需將其添加到TEMPLATES.OPTIONS.context_processors. 檔案解釋說任何人都可以生活,因此您定義是否可以將應用程式放入我們自己的包中。所以:
TEMPLATES = [
{
...,
OPTIONS: {
'context_processors': [
"other.django.processors",
"package.processor.index",
]
}
}]
現在,處理器回傳的所有值都在模板中可用。因此,在您的模板中,僅使用 dict 在處理器中回傳它的鍵來呼叫它,就好像它們在正常背景關系中一樣:{{howtocat}}.
uj5u.com熱心網友回復:
如果您使用基于類的視圖,它們可以相互繼承。
https://docs.djangoproject.com/en/4.0/topics/class-based-views/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/465242.html
標籤:Python django django-rest-framework django-views
上一篇:為食譜創建Django模型
