如何在 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
        ],
    },
   },
  ]