此編碼是否正確?Django:如何擴展settings.py?
from django.conf import settings
settings.TEMPLATE_CONTEXT_PROCESSORS += ['portal.context_processors.login_form_processor']
我想要一個更大的價值添加到項目設置的字典裏,僅僅是出於一個應用程序=)
此編碼是否正確?Django:如何擴展settings.py?
from django.conf import settings
settings.TEMPLATE_CONTEXT_PROCESSORS += ['portal.context_processors.login_form_processor']
我想要一個更大的價值添加到項目設置的字典裏,僅僅是出於一個應用程序=)
你應該導入本地設置模塊
import settings
settings.TEMPLATE_CONTEXT_PROCESSORS += ['portal.context_processors.login_form_processor']
這取決於無論您的TEMPLATE_CONTEXT_PROCESSORS
已經是列表還是元組。如果它是一個列表,那麼這將工作,如果它是一個元組,那麼你會得到一個關於試圖添加列表和元組在一起的錯誤。
你可以做,以確保它的工作原理...
from django.conf import settings
tpl_ctx_prcs = list(settings.TEMPLATE_CONTEXT_PROCESSORS)
tpl_ctx_prcs.append('portal.context_processors.login_form_processor')
settings.TEMPLATE_CONTEXT_PROCESSORS = tuple(tpl_ctx_prcs)
但這是否真正你想要做什麼就做 - 即添加模板,背景處理器,使得它實際上get的調用取決於你在哪裏和什麼時候這樣做。
是否有任何理由不將其添加到您的settings.py
文件中?即使您只需要單個應用程序中的額外上下文,也不會讓它出現在其他應用程序中。
當你將django包作爲獨立的應用程序,你需要要讓你自己的關鍵設置像context_processor,你會要求用戶修改他的設置?我懷疑... – holms 2011-03-14 21:52:38
你可以有一個「標準設置」,可以在你的項目中,settings.py導入這個設置方法如下:
在您的標準設置:
# settings_standard.py
TEMPLATE_CONTEXT_PROCESSORS = (
'context_one',
'context_two'
)
並在您的項目設置:
# project settings.py
import settings_standard.py
TEMPLATE_CONTEXT_PROCESSORS += (
'context_three',
'context_four'
)
注意+ =第二個TEMPLATE_CONTEXT_PROCESSORS。 :)
不要忘了,TEMPLATE_CONTEXT_PROCESSORS「命令敏感」http://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors – H1D 2011-03-14 19:00:13
我給的代碼不工作= /你是一塊代碼是相同的 – holms 2011-03-14 21:55:00
看你的第一行,然後在我的。他們是不同的 – H1D 2011-03-15 01:07:10