日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Django Request对象3.3

發布時間:2023/11/28 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django Request对象3.3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HttpReqeust對象

  • 服務器接收到http協議的請求后,會根據報文創建HttpRequest對象
  • 視圖函數的第一個參數是HttpRequest對象
  • 在django.http模塊中定義了HttpRequest對象的API

屬性

  • 下面除非特別說明,屬性都是只讀的
  • path:一個字符串,表示請求的頁面的完整路徑,不包含域名
  • method:一個字符串,表示請求使用的HTTP方法,常用值包括:'GET'、'POST'
  • encoding:一個字符串,表示提交的數據的編碼方式
    • 如果為None則表示使用瀏覽器的默認設置,一般為utf-8
    • 這個屬性是可寫的,可以通過修改它來修改訪問表單數據使用的編碼,接下來對屬性的任何訪問將使用新的encoding值
  • GET:一個類似于字典的對象,包含get請求方式的所有參數
  • POST:一個類似于字典的對象,包含post請求方式的所有參數
  • FILES:一個類似于字典的對象,包含所有的上傳文件
  • COOKIES:一個標準的Python字典,包含所有的cookie,鍵和值都為字符串
  • session:一個既可讀又可寫的類似于字典的對象,表示當前的會話,只有當Django 啟用會話的支持時才可用,詳細內容見“狀態保持”

方法

  • is_ajax():如果請求是通過XMLHttpRequest發起的,則返回True

QueryDict對象

  • 定義在django.http.QueryDict
  • request對象的屬性GET、POST都是QueryDict類型的對象
  • 與python字典不同,QueryDict類型的對象用來處理同一個鍵帶有多個值的情況
  • 方法get():根據鍵獲取值
    • 只能獲取鍵的一個值
    • 如果一個鍵同時擁有多個值,獲取最后一個值
dict.get('鍵',default)
或簡寫為
dict['鍵']
  • 方法getlist():根據鍵獲取值
    • 將鍵的值以列表返回,可以獲取一個鍵的多個值
dict.getlist('鍵',default)

GET屬性

  • QueryDict類型的對象
  • 包含get請求方式的所有參數
  • 與url請求地址中的參數對應,位于?后面
  • 參數的格式是鍵值對,如key1=value1
  • 多個參數之間,使用&連接,如key1=value1&key2=value2
  • 鍵是開發人員定下來的,值是可變的
  • 示例如下
  • 創建視圖getTest1用于定義鏈接,getTest2用于接收一鍵一值,getTest3用于接收一鍵多值
def getTest1(request):return render(request,'booktest/getTest1.html')
def getTest2(request):return render(request,'booktest/getTest2.html')
def getTest3(request):return render(request,'booktest/getTest3.html')
  • 配置url
url(r'^getTest1/$', views.getTest1),
url(r'^getTest2/$', views.getTest2),
url(r'^getTest3/$', views.getTest3),
  • 創建getTest1.html,定義鏈接
<html>
<head><title>Title</title>
</head>
<body>
鏈接1:一個鍵傳遞一個值
<a href="/getTest2/?a=1&b=2">gettest2</a><br>
鏈接2:一個鍵傳遞多個值
<a href="/getTest3/?a=1&a=2&b=3">gettest3</a>
</body>
</html>
  • 完善視圖getTest2的代碼
def getTest2(request):a=request.GET['a']b=request.GET['b']context={'a':a,'b':b}return render(request,'booktest/getTest2.html',context)
  • 創建getTest2.html,顯示接收結果
<html>
<head><title>Title</title>
</head>
<body>
a:{{ a }}<br>
b:{{ b }}
</body>
</html>
  • 完善視圖getTest3的代碼
def getTest3(request):a=request.GET.getlist('a')b=request.GET['b']context={'a':a,'b':b}return render(request,'booktest/getTest3.html',context)
  • 創建getTest3.html,顯示接收結果
<html>
<head><title>Title</title>
</head>
<body>
a:{% for item in a %}
{{ item }}
{% endfor %}
<br>
b:{{ b }}
</body>
</html>

POST屬性

  • QueryDict類型的對象
  • 包含post請求方式的所有參數
  • 與form表單中的控件對應
  • 問:表單中哪些控件會被提交?
  • 答:控件要有name屬性,則name屬性的值為鍵,value屬性的值為鍵,構成鍵值對提交
    • 對于checkbox控件,name屬性一樣為一組,當控件被選中后會被提交,存在一鍵多值的情況
  • 鍵是開發人員定下來的,值是可變的
  • 示例如下
  • 定義視圖postTest1
def postTest1(request):return render(request,'booktest/postTest1.html')
  • 配置url
url(r'^postTest1$',views.postTest1)
  • 創建模板postTest1.html
<html>
<head><title>Title</title>
</head>
<body>
<form method="post" action="/postTest2/">姓名:<input type="text" name="uname"/><br>密碼:<input type="password" name="upwd"/><br>性別:<input type="radio" name="ugender" value="1"/>男<input type="radio" name="ugender" value="0"/>女<br>愛好:<input type="checkbox" name="uhobby" value="胸口碎大石"/>胸口碎大石<input type="checkbox" name="uhobby" value="跳樓"/>跳樓<input type="checkbox" name="uhobby" value="喝酒"/>喝酒<input type="checkbox" name="uhobby" value="爬山"/>爬山<br><input type="submit" value="提交"/>
</form>
</body>
</html>
  • 創建視圖postTest2接收請求的數據
def postTest2(request):uname=request.POST['uname']upwd=request.POST['upwd']ugender=request.POST['ugender']uhobby=request.POST.getlist('uhobby')context={'uname':uname,'upwd':upwd,'ugender':ugender,'uhobby':uhobby}return render(request,'booktest/postTest2.html',context)
  • 配置url
url(r'^postTest2$',views.postTest2)
  • 創建模板postTest2.html
<html>
<head><title>Title</title>
</head>
<body>
{{ uname }}<br>
{{ upwd }}<br>
{{ ugender }}<br>
{{ uhobby }}
</body>
</html>
  • 注意:使用表單提交,注釋掉settings.py中的中間件crsf

?

?

總結

以上是生活随笔為你收集整理的Django Request对象3.3的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。