如何在 Django 的所有页面上使用一个视图函数?
How to use a view function on all pages in Django?
我正在 Django 中构建一个应用程序,其中有一个布局,其中有导航栏,我将这个布局扩展到每个页面。
为了让导航栏从视图中接收正确的变量,我必须在每个视图上编写相同的代码。必须有一种方法可以一次编写此代码并直接影响布局,这样我就不需要多次键入它,但我还没有找到答案。
如何一次编写函数?我猜像 Django 中的全局变量。
我希望我能解释清楚,谢谢!
在这种情况下,context processors 派上了用场。您可以编写一个函数并将其注册到 settings.py 文件中的模板引擎。这样就可以一次写代码,直接影响布局
首先,您在应用中的某处创建 context_processors.py。
然后编写所需的函数,例如:
from .models imoprt Somemodel
def alltimefunc(request):
something = Somemodel.objects.all()
return something
最后你把它添加到 settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'your_app_name.context_processors.alltimefunc', #here
],
},
},
]
我正在 Django 中构建一个应用程序,其中有一个布局,其中有导航栏,我将这个布局扩展到每个页面。
为了让导航栏从视图中接收正确的变量,我必须在每个视图上编写相同的代码。必须有一种方法可以一次编写此代码并直接影响布局,这样我就不需要多次键入它,但我还没有找到答案。
如何一次编写函数?我猜像 Django 中的全局变量。
我希望我能解释清楚,谢谢!
在这种情况下,context processors 派上了用场。您可以编写一个函数并将其注册到 settings.py 文件中的模板引擎。这样就可以一次写代码,直接影响布局
首先,您在应用中的某处创建 context_processors.py。 然后编写所需的函数,例如:
from .models imoprt Somemodel
def alltimefunc(request):
something = Somemodel.objects.all()
return something
最后你把它添加到 settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'your_app_name.context_processors.alltimefunc', #here
],
},
},
]