日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Python Django之GET请求和POST请求及响应处理

發(fā)布時間:2025/3/11 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python Django之GET请求和POST请求及响应处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、請求中的方法

方法描述
GET請求指定的頁面信息,并返回實體主體。
HEAD類似于GET請求,只不過返回的響應中沒有具體的內(nèi)容,用于獲取報頭。
POST向指定資源提交數(shù)據(jù)進行處理請求(例如:提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。PoST請求可能會導致新的資源的建立和/或已有資源的修改。
PUT從客戶端向服務器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。
DELETE請求服務器刪除指定的頁面。
CONNECTHTTP/1.1協(xié)議中預留能夠?qū)⑦B接改為管道方式的代理服務器。
OPTIONS允許客戶端查看服務器的性能。
TRACE回顯服務器收到的請求,主要用于測試或連接。

二、Django中的請求

方法描述
path_infoURL字符串
method字符串,表示HTTP請求方法,常用值:‘GET’、‘POST’
GETQueryDict查詢字典的對象,包含get請求方式的所有數(shù)據(jù)。
POSTQueryDict查詢字典的對象,包含post請求方式的所有數(shù)據(jù)。
FILES類似于字典的對象,包含所有的上傳文件信息。
COOKIESPython字典,包含所有的cookie,鍵和值都為字符串。
session似于字典的對象,表示當前的會話。
body字符串,請求體的內(nèi)容(POST或PUT)
scheme請求協(xié)議(‘http’/‘https’)
request.get_full_path()請求的完整路徑
request.META請求中的元數(shù)據(jù)(消息頭),-request.META[‘REMOTE_ADDR’]:客戶端IP地址

三、響應狀態(tài)碼

下面是常見的HTTP狀態(tài)碼:

  • 200 - 請求成功
  • 301 - 永久重定向-資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其他URL
  • 302 - 臨時重定向
  • 404 - 請求的資源(網(wǎng)頁等)不存在
  • 500 - 內(nèi)部服務器錯誤

四、Django中的響應對象

構(gòu)造函數(shù)格式:

HttpResponse(content=響應體,content_type=響應體數(shù)據(jù)類型,status=狀態(tài)碼)

作用:

向客戶端瀏覽器返回響應,同時攜帶響應體內(nèi)容

參數(shù):

  • content:表示返回的內(nèi)容。
  • ststus_code:返回的HTTP響應狀態(tài)碼(默認為200)。
  • content_type:指定返回數(shù)據(jù)的MIME類型(默認為"text/html")。瀏覽器會根據(jù)這個屬性,來顯示數(shù)據(jù)。如果是text/html,那么就會解析這個字符串,如果text/plain,那么就會顯示一個純文本。

常用的Content-Type如下:

  • ‘text/html’:默認的html文件
  • ‘text/plain’:純文本
  • ‘text/css’:css文件
  • ‘text/javascript’:js文件
  • ‘multipart/form-data’:文件提交
  • ‘a(chǎn)pplication/json’:json傳輸
  • ‘a(chǎn)pplication/xml’:xml文件

HttpResponse子類:

類型作用狀態(tài)碼
HttpResponseRedirect重定向302
HttpResponseNotModified未修改304
HttpResponseBadRequest錯誤請求400
HttpResponseNotFound沒有對應的資源404
HttpResponseForbidden請求被禁止403
HttpResponseServerError服務器錯誤500

五、GET請求實例測試

Python利用Django創(chuàng)建mysite工程,添加views.py文件,如下圖示:

urls.py文件代碼:

from django.contrib import admin from django.urls import path, re_path from . import viewsurlpatterns = [path('admin/', admin.site.urls),# http://127.0.0.1:8000/test_requestpath('test_request/', views.test_request), ]

views.py文件代碼:

from django.http import HttpResponsedef test_request(request):print('path info is : ', request.path_info)print('method is : ', request.method)print('querystring is : ', request.GET)print('full path is :', request.get_full_path())print('客戶端IP is :', request.META['REMOTE_ADDR'])return HttpResponse('test request ok')

編譯運行后,在瀏覽器地址欄輸入:http://127.0.0.1:8000/test_request/?m=1&n=2效果如下:

六、GET處理和POST處理

定義:

無論是GET還是POST,統(tǒng)一都由視圖函數(shù)接收請求,通過判斷request.method區(qū)分具體的請求動作。

GET處理:

GET請求動作,一般用于向服務器獲取數(shù)據(jù)。

能夠產(chǎn)生GET請求的場景:

  • 瀏覽器地址欄中輸入URL,回車后

  • <a href="地址?參數(shù)=值&參數(shù)=值">

  • form表單中的method為get

POST處理:

POST請求動作,一般用于向服務器提交大量/隱私數(shù)據(jù)。

客戶端通過表單等POST請求將數(shù)據(jù)傳遞給服務端。

服務器端接收參數(shù),通過request.method來判斷是否為POST請求。


七、GET處理和POST處理實例測試

urls.py文件代碼:

from django.contrib import admin from django.urls import path, re_path from . import viewsurlpatterns = [path('admin/', admin.site.urls),# http://127.0.0.1:8000/main_pagepath('main_page/', views.main_page),# http://127.0.0.1:8000/test_get_postpath('test_get_post/', views.test_get_post), ]

views.py文件代碼:

from django.http import HttpResponse, HttpResponseRedirectPOST_FORM = ''' <form method='post' action='/test_get_post/'>用戶名:<input type='text' name='uname'><input type='submit' value='提交'> </form> '''def main_page(request):html = """<h4>這是我的網(wǎng)站首頁</h4><a href="http://www.datutusuibi.com/" target="_blank">大土土隨筆</a>"""return HttpResponse(html)def test_get_post(request):if request.method == 'GET':print(request.GET)print(request.GET['m'])print(request.GET.getlist('m'))print(request.GET.get('t', 'no t'))return HttpResponse(POST_FORM)elif request.method == 'POST':# 處理用戶提交數(shù)據(jù)print('uname is : ', request.POST['uname'])return HttpResponseRedirect('/main_page/')else:passreturn HttpResponse('test get post ok')

使用POST方式接收客戶端數(shù)據(jù)時,需要取消csrf驗證。

編譯運行后,在瀏覽器地址欄輸入:http://127.0.0.1:8000/test_get_post/?m=1&n=2&m=3效果如下:


輸入用戶名,單擊“提交”按鈕,

效果如下:



獲取更多資料,請訪問大土土隨筆

如果本文對您有所幫助,請關注微信公眾號“捷創(chuàng)源科技”

總結(jié)

以上是生活随笔為你收集整理的Python Django之GET请求和POST请求及响应处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。