在每个 Django 页面中传递一个对象

Posted

技术标签:

【中文标题】在每个 Django 页面中传递一个对象【英文标题】:Passing an object in every Django page 【发布时间】:2011-11-23 05:46:34 【问题描述】:

我有一个名为Groups 的对象,用于我网站上的每个页面。但是,Django 仅通过render_to_response 将 Python 对象传递给 html,并且我无法在组对象发生任何事情时呈现响应。

我如何维护这个对象(如让它响应添加和删除)并在我拥有的每个 Django 模板中生成它而不调用render_to_response

【问题讨论】:

【参考方案1】:

写一个template context processor:

#my_context_processors.py

def include_groups(request):
    #perform your logic to create your list of groups
    groups = []
    return 'groups':groups

然后将其添加到您的设置文件中:

#settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
     "django.core.context_processors.auth",
     "django.core.context_processors.debug",
     "django.core.context_processors.i18n",
     "django.core.context_processors.media",
     "path.to.my_context_processors.include_groups",
)

现在您可以在所有模板中使用变量 groups

【讨论】:

【参考方案2】:

如果您需要将数据添加到多个模板上下文中,您应该考虑通过自己的template context processor 来实现。

【讨论】:

【参考方案3】:

您需要创建模板上下文处理器以将对象传递给每个请求。这是一些example

【讨论】:

以上是关于在每个 Django 页面中传递一个对象的主要内容,如果未能解决你的问题,请参考以下文章

如何将内容从 django 中的页面传递到侧边栏?

将对象从模板传递给 django 视图(控制器)

Django开发笔记

Django Request 与Response对象

Django – 使用相同的模板创建页面和对象

将模型属性传递给 Django 中的 URL