<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 第三節:HttpRequest對象 # WSGIRequest對象 Django在接收到http請求之后,會根據http請求攜帶的參數以及報文信息創建一個`WSGIRequest`對象,并且作為視圖函數第一個參數傳給視圖函數。也就是我們經常看到的`request`參數。在這個對象上我們可以找到客戶端上傳上來的所有信息。這個對象的完整路徑是`django.core.handlers.wsgi.WSGIRequest`。 ## WSGIRequest對象常用屬性和方法: ### WSGIRequest對象常用屬性: `WSGIRequest`對象上大部分的屬性都是只讀的。因為這些屬性是從客戶端上傳上來的,沒必要做任何的修改。以下將對一些常用的屬性進行講解: 1. `path`:請求服務器的完整“路徑”,但不包含域名和參數。比如`http://www.baidu.com/xxx/yyy/`,那么`path`就是`/xxx/yyy/`。 2. `method`:代表當前請求的`http`方法。比如是`GET`還是`POST`。 3. `GET`:一個`django.http.request.QueryDict`對象。操作起來類似于字典。這個屬性中包含了所有以`?xxx=xxx`的方式上傳上來的參數。 4. `POST`:也是一個`django.http.request.QueryDict`對象。這個屬性中包含了所有以`POST`方式上傳上來的參數。 5. `FILES`:也是一個`django.http.request.QueryDict`對象。這個屬性中包含了所有上傳的文件。 6. `COOKIES`:一個標準的Python字典,包含所有的`cookie`,鍵值對都是字符串類型。 7. `session`:一個類似于字典的對象。用來操作服務器的`session`。 8. `META`:存儲的客戶端發送上來的所有`header`信息。 9. `CONTENT_LENGTH`:請求的正文的長度(是一個字符串)。 10. `CONTENT_TYPE`:請求的正文的MIME類型。 11. `HTTP_ACCEPT`:響應可接收的Content-Type。 12. `HTTP_ACCEPT_ENCODING`:響應可接收的編碼。 13. `HTTP_ACCEPT_LANGUAGE`: 響應可接收的語言。 14. `HTTP_HOST`:客戶端發送的HOST值。 15. `HTTP_REFERER`:在訪問這個頁面上一個頁面的url。 16. `QUERY_STRING`:單個字符串形式的查詢字符串(未解析過的形式)。 17. `REMOTE_ADDR`:客戶端的IP地址。如果服務器使用了`nginx`做反向代理或者負載均衡,那么這個值返回的是`127.0.0.1`,這時候可以使用`HTTP_X_FORWARDED_FOR`來獲取,所以獲取`ip`地址的代碼片段如下:``` <pre class="calibre12">``` <span class="hljs-keyword">if</span> request.META.has_key(<span class="hljs-string">'HTTP_X_FORWARDED_FOR'</span>): ip = request.META[<span class="hljs-string">'HTTP_X_FORWARDED_FOR'</span>] <span class="hljs-keyword">else</span>: ip = request.META[<span class="hljs-string">'REMOTE_ADDR'</span>] ``` ``` 18. `REMOTE_HOST`:客戶端的主機名。 19. `REQUEST_METHOD`:請求方法。一個字符串類似于`GET`或者`POST`。 20. `SERVER_NAME`:服務器域名。 21. `SERVER_PORT`:服務器端口號,是一個字符串類型。 ### WSGIRequest對象常用方法: 1. `is_secure()`:是否是采用`https`協議。 2. `is_ajax()`:是否采用`ajax`發送的請求。原理就是判斷請求頭中是否存在`X-Requested-With:XMLHttpRequest`。 3. `get_host()`:服務器的域名。如果在訪問的時候還有端口號,那么會加上端口號。比如`www.baidu.com:9000`。 4. `get_full_path()`:返回完整的path。如果有查詢字符串,還會加上查詢字符串。比如`/music/bands/?print=True`。 5. `get_raw_uri()`:獲取請求的完整`url`。 ## QueryDict對象: 我們平時用的`request.GET`和`request.POST`都是`QueryDict`對象,這個對象繼承自`dict`,因此用法跟`dict`相差無幾。其中用得比較多的是`get`方法和`getlist`方法。 1. `get`方法:用來獲取指定`key`的值,如果沒有這個`key`,那么會返回`None`。 2. `getlist`方法:如果瀏覽器上傳上來的`key`對應的值有多個,那么就需要通過這個方法獲取。
                  <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>

                              哎呀哎呀视频在线观看