Django 1.5中的模板上下文处理器在哪里?

时间:2013-03-16 07:06:24

标签: django django-staticfiles

它应该自动列在Settings.py中还是我必须添加它?我正在开发一个非常困难的时候提供一个图像文件,而且文档对我来说太简洁了,并且由于某些原因不能清楚地向我说清楚。我想查看我的template_context_processors是什么,但它位于何处?它不在我的settings.py文件中。我是否需要对此进行编辑?

("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages")

2 个答案:

答案 0 :(得分:45)

settings.py中,您可以定义TEMPLATE_CONTEXT_PROCESSORS设置。

但是,django已为此设置定义了默认值

("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages")

如果要添加维护默认处理器的自定义模板上下文处理器,可以在settings.py

中执行以下操作
import django.conf.global_settings as DEFAULT_SETTINGS

TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
    'custom_context_processors.my_context_processor',
)

参考TEMPLATE_CONTEXT_PROCESSORS doc。

答案 1 :(得分:3)

您可以跳转到django python shell并导入设置,查看应用正在使用的上下文处理器。

$ manage.py shell
> from django.conf import settings
> settings.TEMPLATE_CONTEXT_PROCESSORS

如果你没有覆盖它们,那么应该渲染默认值。

在静态文件上,检查您的STATICFILES_DIRS,这是django的开发服务器将为静态资产提供服务的地方:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-STATICFILES_DIRS

我在settings.py

中使用此功能
from os.path import join, abspath
PROJECT_ROOT = abspath(join(dirname(__file__), '..', '..'))
STATICFILES_DIRS = [join(PROJECT_ROOT, 'public'), ]

这对您来说不一样,因为它取决于您如何布置项目。