<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 第一節:上下文處理器 # 上下文處理器 上下文處理器是可以返回一些數據,在全局模板中都可以使用。比如登錄后的用戶信息,在很多頁面中都需要使用,那么我們可以放在上下文處理器中,就沒有必要在每個視圖函數中都返回這個對象。 在`settings.TEMPLATES.OPTIONS.context_processors`中,有許多內置的上下文處理器。這些上下文處理器的作用如下: 1. `django.template.context_processors.debug`:增加一個`debug`和`sql_queries`變量。在模板中可以通過他來查看到一些數據庫查詢。 2. `django.template.context_processors.request`:增加一個`request`變量。這個`request`變量也就是在視圖函數的第一個參數。 3. `django.contrib.auth.context_processors.auth`:`Django`有內置的用戶系統,這個上下文處理器會增加一個`user`對象。 4. `django.contrib.messages.context_processors.messages`:增加一個`messages`變量。 5. `django.template.context_processors.media`:在模板中可以讀取`MEDIA_URL`。比如想要在模板中使用上傳的文件,那么這時候就需要使用`settings.py`中設置的`MEDIA_URL`來拼接`url`。示例代碼如下:``` <pre class="calibre12">``` <span class="hljs-tag"><<span class="hljs-class">img</span> <span class="hljs-class">src</span>=<span class="hljs-string">""</span> /></span> ``` ``` 6. `django.template.context_processors.static`:在模板中可以使用`STATIC_URL`。 7. `django.template.context_processors.csrf`:在模板中可以使用`csrf_token`變量來生成一個`csrf token`。 ## 自定義上下文處理器: 有時候我們想要返回自己的數據。那么這時候我們可以自定義上下文處理器。自定義上下文處理器的步驟如下: 1. 你可以根據這個上下文處理器是屬于哪個`app`,然后在這個`app`中創建一個文件專門用來存儲上下文處理器。比如`context_processors.py`。或者是你也可以專門創建一個`Python包`,用來存儲所有的上下文處理器。 2. 在你定義的上下文處理器文件中,定義一個函數,這個函數只有一個`request`參數。這個函數中處理完自己的邏輯后,把需要返回給模板的數據,通過字典的形式返回。如果不需要返回任何數據,那么也必須返回一個空的字典。示例代碼如下:``` <pre class="calibre12">``` <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">frontuser</span><span class="hljs-params">(request)</span>:</span> userid = request.session.get(<span class="hljs-string">"userid"</span>) userModel = models.FrontendUser.objects.filter(pk=userid).first() <span class="hljs-keyword">if</span> userModel: <span class="hljs-keyword">return</span> {<span class="hljs-string">'frontuser'</span>:userModel} <span class="hljs-keyword">else</span>: <span class="hljs-keyword">return</span> {} ``` ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看