2013-03-16 74 views
22

是否应该自动在Settings.py中列出,还是必须添加?我在开发中提供一个图像文件的时间非常困难,而且文档对于我的口味来说太简单了,并且出于某种原因不会将这些内容明确地拼写出来。我想查看我的template_context_processors是什么,但它位于何处?它不在我的settings.py文件中。我是否需要通常编辑?Django 1.5中的模板上下文处理器在哪里?

("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") 
+0

您发布的内容是模板上下文处理器列表 – catherine 2013-03-16 07:42:38

回答

45

在你settings.py可以定义TEMPLATE_CONTEXT_PROCESSORS设置。

此设置。如果你想添加自定义模板,背景处理器,其保持默认的处理器,这是

("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") 

然而,Django的已定义的默认值,你可以在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。

+0

非常感谢。我创建了一个新的Django项目,并没有看到预填充在自动创建的settings.py文件中的TEMPLATE_CONTEXT_PROCESSORS。要提供静态文件,是否需要复制并粘贴上述内容,或者我是否会在这里错误地选择路径? – user798719 2013-03-16 16:49:25

+0

@ user798719,我不这么认为。该设置是默认设置,您不需要编辑它。另外,不要认为这是服务静态文件所必需的。 – Rohan 2013-03-16 17:40:01

+0

谢谢。还有一个问题。如果我想添加一个新的自定义上下文处理器,我可以以某种方式将它附加到默认的上下文处理器,还是需要将settings.py中的完整上下文处理器配置复制? – Miquel 2013-08-29 08:33:08

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'), ] 

这会不会是同样的话,因为这将取决于你如何布置你的项目。

相关问题