日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python全棧開發基礎知識學習——Django框架(二)

系統 1919 0

Django框架(二)

    • 請求和響應對象
      • HttpRequest對象
      • HttpResponse對象

python全棧開發基礎知識學習——Django框架(二)_第1張圖片

本博文主要了解的是MTV模型中的 View(視圖) ,主要負責業務邏輯,并在適當的時候調用Model和Template。

請求和響應對象

Django使用請求和響應對象來通過系統傳遞狀態。

當請求頁面時,Django創建一個HttpRequest包含有關請求的元數據的對象。然后Django加載適當的視圖,將HttpRequest第一個參數傳遞給view函數。每個視圖都負責返回一個HttpResponse對象。

本文介紹了 模塊中定義的API HttpRequest和 HttpResponse對象django.http。


HttpRequest對象

屬性 描述
HttpRequest.scheme 表示請求方案(http或https 通常)的字符串。
HttpRequest.body 原始HTTP請求主體作為字節串,例: b’name=jie&sex=man’,它能夠獲取表單數據
HttpRequest.path 表示所請求頁面的完整路徑的字符串,不包括方案或域。例:/register/
HttpRequest. get_full_path() 表示所請求頁面的完整路徑的字符串,包括get方法取得的表單數據
HttpRequest.method 表示請求中使用的HTTP方法的字符串。其返回值是 大寫的
HttpRequest.encoding 表示用于解碼表單提交數據的當前編碼的字符串(或者None)您可以寫入此屬性以更改訪問表單數據時使用的編碼。任何后續屬性訪問(例如從GET或讀取POST)都將使用新encoding值。如果您知道表單數據不在DEFAULT_CHARSET 編碼中,則非常有用。
HttpRequest.GET 類似字典的對象,包含所有給定的HTTP GET參數。
HttpRequest.POST 類似字典的對象,包含所有給定的HTTP POST參數,前提是請求包含表單數據。如果您需要訪問請求中發布的原始或非表單數據,請通過該HttpRequest.body屬性訪問該數據 。服務器收到空的POST請求的情況也是可能發生的,也就是說,表單form通過HTTP POST方法提交請求,但是表單中可能沒有數據,因此不能使用 if req.POST來判斷是否使用了HTTP POST 方法;應該使用 if req.method=="POST"
HttpRequest.COOKIES 包含所有cookie的字典。鍵和值是字符串。
HttpRequest.FILES 包含所有上傳文件的類字典對象;FILES中的每一個Key都是標簽中 name屬性的值,FILES中的每一個value同時也是一個標準的python字典對象,包含下面三個Keys:1. filename: 上傳文件名,用字符串表示;2.content_type: 上傳文件的Content Type;3. content: 上傳文件的原始內容
user 是一個django.contrib.auth.models.User對象,代表當前登陸的用戶。如果訪問用戶當前沒有登陸,user將被初始化為django.contrib.auth.models.AnonymousUser的實例。你可以通過user的is_authenticated()方法來辨別用戶是否登陸:if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware時該屬性才可用
session 唯一可讀寫的屬性,代表當前會話的字典對象;自己有激活Django中的session支持時該屬性才可用。
HttpRequest.headers 一個不區分大小寫的類似dict的對象,它提供對請求中所有HTTP加前綴的標題(加號Content-Length和Content-Type)的訪問。

HttpResponse對象

對于HttpRequest對象來說,是由django自動創建的,但是,HttpResponse對象就必須我們自己創建。每個view請求處理方法必須返回一個HttpResponse對象。

HttpResponse類在django.http.HttpResponse

在HttpResponse對象上擴展的常用方法:

方法 描述
render()以及render_to_response() 頁面渲染
redirect(“路徑”) 頁面跳轉
locals() 可以直接將函數中所有的變量傳給模板

render和redirect的區別:
render 返回頁面內容(渲染變量到模板中),并且沒有發送第二次請求,不會修改URL的地址。
redirect 發送了第二次請求,是個跳轉函數,而且會返回302的狀態碼。

模板對象調用render方法,將context對象加載渲染到template模板對象中,得到的結果是一個HTML文檔。

            
              -----------------------------------url.py

 url(r"login",   views.login),
 url(r"jie_back",   views.jie_back),

-----------------------------------views.py
def login(req):
    if req.method=="POST":
        if 1:
	        name="jie"
	        
            # return redirect("/jie_back/")
            return render(req,"my backend.html",locals())

    return render(req,"login.html",locals())


def jie_back(req):

    name="杰"

    return render(req,"my backend.html",locals())

-----------------------------------login.html


              

姓名

性別

郵箱

-----------------------------------my backend.html

用戶{{ name }}你好

這個示例中,我們要測試 return redirect("/jie_back/") return render(req,"my backend.html",locals())
的區別,url是否發生了變化.


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 临高县| 科技| 右玉县| 青浦区| 丹凤县| 阿图什市| 许昌市| 宜昌市| 弥勒县| 莲花县| 贡山| 赣州市| 昭苏县| 崇明县| 云南省| 鄂尔多斯市| 宁波市| 定安县| 修文县| 石柱| 玉田县| 东海县| 柘荣县| 宿迁市| 金华市| 隆尧县| 山西省| 乐东| 旬阳县| 张掖市| 若羌县| 剑河县| 沙湾县| 普宁市| 桐城市| 高雄县| 栖霞市| 朝阳区| 崇左市| 吴桥县| 台山市|