22

它应该自动列在 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")
4

2 回答 2

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文档。

于 2013-03-16T07:54:45.877 回答
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'), ]

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

于 2013-03-17T00:14:13.143 回答