<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 431,  comments - 344,  trackbacks - 0

    Django因此提供對全局 context處理器的支持。TEMPLATE_CONTEXT_PROCESSORS指定了總是使用哪些contextprocessors。這樣就省去了每次使用RequestContext都指定processors的麻煩^_^

    默認情況下,TEMPLATE_CONTEXT_PROCESSORS設置如下:

    TEMPLATE_CONTEXT_PROCESSORS = (
        'django.core.context_processors.auth',
        'django.core.context_processors.debug',
        'django.core.context_processors.i18n',
        'django.core.context_processors.media',
    )

    這個設置是一個可調用函數的Tuple,其中的每個函數使用了和上文中我們的custom_proc相同的接口:接收一個request對象作為參數,返回一個包含了將被合并到context中的項的字典。請注意TEMPLATE_CONTEXT_PROCESSORS中的值是以 strings的形式給出的,這意味著這些處理器必須在你的python路徑中的某處(這樣你才能在設置中引用它們)

    每個處理器將會按照順序應用。也就是說如果你在第一個處理器里面向context添加了一個變量,而第二個處理器添加了同樣名字的變量,那么第二個將會覆蓋第一個。

    Django提供了幾個簡單的context處理器,有些在默認情況下被啟用的。

    django.core.context_processors.auth

    如果TEMPLATE_CONTEXT_PROCESSORS包含了這個處理器,那么每個RequestContext將包含這些變量:

    §                                 user:一個django.contrib.auth.models.User實例,描述了當前登錄用戶(或者一個AnonymousUser實例,如果客戶端沒有登錄)。

    §                                 messages:一個當前登錄用戶的消息列表(字符串)。在后臺,對每一個請求這個變量都調用request.user.get_and_delete_messages()方法。這個方法收集用戶的消息然后把它們從數據庫中刪除。

    §                                 permsdjango.core.context_processors.PermWrapper的一個實例,包含了當前登錄用戶有哪些權限。

    關于userspermissionsmessages的更多內容請參考第12章。

    django.core.context_processors.debug

    這個處理器把調試信息發(fā)送到模板層。如果TEMPLATE_CONTEXT_PROCESSORS包含了這個處理器,RequestContext將包含這些變量:

    §                                 debug:你設置的DEBUG的值(TrueFalse)。你可以在模板里面用這個變量測試是否處在debug模式下。

    §                                 sql_queries:包含類似于{'sql':...,'time':...}的字典的一個列表,記錄了這個請求期間的每個SQL查詢以及查詢所耗費的時間。這個列表是按照請求順序進行排列的。

    由于調試信息比較敏感,所以這個context處理器只有當同時滿足下面兩個條件的時候才有效:

    §                                 DEBUG參數設置為True

    §                                 請求的ip應該包含在INTERNAL_IPS的設置里面。

    django.core.context_processors.i18n

    如果這個處理器啟用,每個RequestContext將包含下面的變量:

    §                                 LANGUAGESLANGUAGES選項的值。

    §                                 LANGUAGE_CODE:如果request.LANGUAGE_CODE存在,就等于它;否則,等同于LANGUAGE_CODE設置。

    附錄E提供了有關這兩個設置的更多的信息。

    django.core.context_processors.request

    如果啟用這個處理器,每個RequestContext將包含變量request,也就是當前的HttpRequest對象。注意這個處理器默認是不啟用的,你需要激活它。

    Context處理器的一些建議

    編寫處理器的一些建議:

    §                                 使每個context處理器完成盡可能小的功能。使用多個處理器是很容易的,所以你可以根據邏輯塊來分解功能以便將來重用。

    §                                 要注意TEMPLATE_CONTEXT_PROCESSORS里的context processor 將會在每個模板中有效,所以要變量的命名不要和模板的變量沖突。變量名是大小寫敏感的,所以processor的變量全用大寫是個不錯的主意。

    §                                 只要它們存放在你的Python的搜索路徑中,它們放在哪個物理路徑并不重要,這樣你可以在TEMPLATE_CONTEXT_PROCESSORS設置里指向它們。也就是說,你要把它們放在app或者project目錄里名為context_processors.py的文件。

    posted on 2008-12-01 22:28 周銳 閱讀(1240) 評論(0)  編輯  收藏 所屬分類: Python
    主站蜘蛛池模板: 久久精品国产亚洲av麻豆蜜芽 | 99精品在线免费观看| 亚洲精品国产高清在线观看| 亚洲国产成人久久精品动漫 | 老司机午夜精品视频在线观看免费| 亚洲精品天天影视综合网| 浮力影院亚洲国产第一页| 日韩中文无码有码免费视频| 日本高清在线免费| 99re这里有免费视频精品| 在线成人精品国产区免费| av电影在线免费看| 免费精品国自产拍在线播放| 亚洲老熟女五十路老熟女bbw| 亚洲一级毛片在线播放| 亚洲成人高清在线观看| 亚洲高清视频免费| 久久精品国产亚洲AV香蕉| 亚洲AV无码一区二区二三区软件 | 免费播放国产性色生活片| 日韩亚洲人成在线综合| 亚洲国产成人无码AV在线| 亚洲欧洲AV无码专区| 亚洲综合精品伊人久久| ass亚洲**毛茸茸pics| 亚洲一区动漫卡通在线播放| 亚洲精品乱码久久久久久下载| 91精品国产亚洲爽啪在线影院| 午夜亚洲AV日韩AV无码大全| 亚洲精选在线观看| 4444亚洲国产成人精品| 亚洲神级电影国语版| 亚洲制服丝袜精品久久| 亚洲av无码片区一区二区三区| 亚洲av乱码一区二区三区香蕉| 亚洲人成高清在线播放| 亚洲欧洲国产综合AV无码久久| 亚洲AV无码资源在线观看| 国产成人亚洲毛片| xxxxx做受大片视频免费| 91视频免费观看|