<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

    這個處理器把調試信息發送到模板層。如果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
    主站蜘蛛池模板: 精品在线观看免费| 免费人成在线观看网站视频| 男女一进一出抽搐免费视频 | 成全高清在线观看免费| 黄色一级毛片免费看| 日韩亚洲人成网站| 美女18一级毛片免费看| 日本亚洲色大成网站www久久| 亚洲精品无码久久久久久久| 亚洲精品白浆高清久久久久久 | jizz免费在线观看| 老司机精品视频免费| 久久精品国产亚洲av瑜伽| 亚洲第一街区偷拍街拍| 久久久久久亚洲精品影院| 久久精品国产亚洲av麻豆图片 | 最新仑乱免费视频| 久久精品网站免费观看| 永久黄网站色视频免费直播| 永久免费bbbbbb视频| 国产特级淫片免费看| 亚洲精品国精品久久99热| 亚洲AV成人精品日韩一区18p| 亚洲v国产v天堂a无码久久| 久久久久亚洲精品天堂久久久久久 | 国产好大好硬好爽免费不卡| 国产成人精品免费视频动漫 | 亚洲一区二区三区影院| 久久亚洲熟女cc98cm| 亚洲最大无码中文字幕| jzzijzzij在线观看亚洲熟妇| 国产亚洲美女精品久久| 国产成人精品免费大全| 久久免费福利视频| 啦啦啦www免费视频| 亚洲伊人色欲综合网| 亚洲国产亚洲片在线观看播放| 亚洲人成电影网站色| 成人免费av一区二区三区| 在线视频观看免费视频18| 久久久久亚洲爆乳少妇无|