djanog總結

              目錄              

1.簡述http協議

  超文本傳輸協議

  特色:

    無狀態:第一次請求完畢,發起第二次請求,第二次請求仍是如第一次請求同樣,他不會記憶你是否訪問過

    短連接:一次請求一次響應,而後就斷開連接

   格式:web

    請求頭和請求體數據庫

      請求頭首行的格式是 請求方式  請求地址  http協議版本 ,(除了首行)使用\r\n分隔,和請求體須要使用2個\r\n來分隔django

      

    響應頭和響應體json

      

    GET和POST的請求頭又不同:GET只有請求頭,而POST有請求頭和請求體   跨域

2.你瞭解的請求頭和響應頭有哪些?

請求頭:瀏覽器

  User-Agent:訪問設備的信息服務器

  Host:訪問的服務器地址數據結構

  referer:作防盜鏈的socket

  Content-Type:ide

響應頭:

  

  

3.你瞭解的請求方式和狀態碼有哪些

  請求方式

    

  狀態碼(常見的)


    
   

  詳細參考:

    100 繼續
    101 分組交換協
    200 OK
    201 被建立
    202 被採納
    203 非受權信息
    204 無內容
    205 重置內容
    206 部份內容
    300 多選項
    301 永久地傳送
    302 找到
    303 參見其餘
    304 未改動
    305 使用代理
    307 暫時重定向
    400 錯誤請求
    401 未受權
    402 要求付費
    403 禁止
    404 未找到
    405 不容許的方法
    406 不被採納
    407 要求代理受權
    408 請求超時
    409 衝突
    410 過時的
    411 要求的長度
    412 前提不成立
    413 請求實例太大
    414 請求URI太大
    415 不支持的媒體類型
    416 沒法知足的請求範圍
    417 失敗的預期
    500 內部服務器錯誤
    501 未被使用
    502 網關錯誤
    503 不可用的服務
    504 網關超時
    505 HTTP版本未被支持
詳細響應狀態碼

 

4.django請求的生命週期 / 當在瀏覽器上輸入了一個網址,並敲下回車他中間發生了什麼?

  1.對域名進行dns解析

  2.瀏覽器(socket客戶端)根據返回的ip和端口進行向服務器發送請求

  3.當服務器接收到請求

    1.實現了wsgi協議的模塊,如:wsgiref或uwsgi進行數據的接收

    2.而後將請求轉交給django的中間件(如:process_request)

    3.路由系統匹配視圖函數

    4.視圖函數進行業務處理 (orm的數據操做+模板渲染)

    5.交給中間件的process_response方法進行傳遞

    6.數據到達wsgi,而後wsgi把數據傳遞給瀏覽器,而後斷開連接

  4.瀏覽器接收到數據後斷開連接

5.什麼是wsgi?

   web服務的網關接口,它是一個協議,

  實現wsgi協議的經常使用兩個模塊

    wsgiref和uwsgi

  實現wsgi的本質實際上是socket服務端

6.django中間件的做用?應用場景?

  做用:中間件能夠對用戶的請求和響應進行批量操做

  應用場景:

    本身玩的:

      黑名單

      記錄日誌

    實際應用:

      權限校驗

      用戶登陸

      跨域問題

      csrf(校驗:django自帶的)

  相關知識點

    1.流程實現原理:列表+翻轉列表

    2.反射

7.路由系統

  本質:保存路由與視圖的對應關係的地方

  

  

  

8.什麼是MVC,MTV?

  MVC:model view controller

    模型視圖控制器

  MTV :model template view

    模型模板和視圖

9.FBV和CBV

  FBV:寫函數進行業務邏輯的處理

  CBV:寫類來進行業務邏輯的處理

  本質是他們兩個都同樣,由於都是對應的是一個函數,cbv返回的就是一個view函數

10.視圖函數的返回值?  

  1.Httpresponse

    返回的是一個字符串

  2.render

    從數據庫拿到數據,而後對模板進行渲染,返回的是一個字符串

  3.redirect

    返回一個響應頭,他的location及對應的值就是你要跳轉的地方

              問題              

1.現象:兩個系統之間進行相互數據傳輸,系統1向系統2發送POST請求,但系統2的request.POST中沒有獲取到數據,多是由於什麼?

   分析1:多是csrf_token的問題,對post發送的數據進行攔截了

    解決方法:在對一個的函數或類加裝飾器(目的:不對其進行csrf校驗)

    from django.views.decorators.csrf import csrf_exempt(不校驗),csrf_protect(校驗)

  分析2:可能傳過來的數據格式有問題,如:傳過來的數據是json的數據結構

      解決辦法:1.你能夠去request.body中把數據取出來,而後轉換成字符串,再經過反序列化獲得數據(不推薦)

          2.使用django-rest_framework來對數據進行解析(它裏面自帶着對json數據解析的解析器)

相關文章
相關標籤/搜索