Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据传递给django布局(如';base.html';),而不必通过每个视图提供数据?_Html_Django_Django Templates_Django Views - Fatal编程技术网

如何将数据传递给django布局(如';base.html';),而不必通过每个视图提供数据?

如何将数据传递给django布局(如';base.html';),而不必通过每个视图提供数据?,html,django,django-templates,django-views,Html,Django,Django Templates,Django Views,我正在尝试将数据传递到layout'base.html'。我目前正在将数据存储在request.session中,并通过request对象在'base.html'中访问它 是否有任何方法可以将数据传递到'base.html',而不必从每个视图传递数据?如果(几乎)每个模板都需要这些数据,那么使用上下文处理器是有意义的。从django文档: context_processors选项是一个可调用项列表,称为context processors,它们将请求对象作为参数,并返回要合并到上下文中的项的字典

我正在尝试将数据传递到layout
'base.html'
。我目前正在将数据存储在
request.session
中,并通过request对象在
'base.html'
中访问它

是否有任何方法可以将数据传递到
'base.html'
,而不必从每个视图传递数据?

如果(几乎)每个模板都需要这些数据,那么使用上下文处理器是有意义的。从django文档:

context_processors选项是一个可调用项列表,称为context processors,它们将请求对象作为参数,并返回要合并到上下文中的项的字典


使用上下文处理器,它正是为此目的而设计的。在一个应用程序目录中创建一个文件
context\u processors.py
,然后在该文件中定义一个函数,该函数返回要插入到每个模板上下文中的变量字典,如下所示:

def add_variable_to_context(request):
    return {
        'testme': 'Hello world!'
    }
在设置中启用上下文处理器(django>=1.8):

然后在每一个你可以写的模板中

{{testme}}

它将呈现为

你好,世界


更多信息请参见

是的,上下文处理器或中间件,它们都有大量文档。这就足够了。谢谢,lota还可以使用自定义过滤器。如果要注入的数据是动态的,该怎么办nature@HassanBaig您可以根据需要自定义
将变量添加到上下文中。例如,您可以导入Django模型,执行一些查询,并在每个模板中插入一些动态内容。在这个例子中,我使用了一个字符串文字来保持代码的简单易懂。
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [root('templates'),],
        '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',
                'yourapp.context_processors.add_variable_to_context',
            ],
        },
    },
]