2013-03-16 84 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'), ] 

這會不會是同樣的話,因爲這將取決於你如何佈置你的項目。

相關問題