国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Django視圖-HttpRequest請求對象和HttpResponse響應(yīng)對象

這篇具有很好參考價值的文章主要介紹了Django視圖-HttpRequest請求對象和HttpResponse響應(yīng)對象。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


def index(request):  這個request其實就是內(nèi)部已經(jīng)封裝好的Http請求HttpRequest,它是一個請求對象

Django中的視圖主要用來接受Web請求,并做出響應(yīng)。
視圖的本質(zhì)就是一個Python中的函數(shù)
視圖的響應(yīng)分為兩大類
	1) 以json數(shù)據(jù)形式返回(JsonResponse)
	2) 以網(wǎng)頁的形式返回
		2.1) 重定向到另一個網(wǎng)頁(HttpResponseRedirect)
		2.2) 錯誤視圖(4xx,5xx)(HttpResponseNotFound,HttpResponseForbidden,HttpResponseNotAllowed等)
視圖響應(yīng)過程:
	瀏覽器輸入-> urls 路由匹配  -> 視圖響應(yīng) -> 回饋到瀏覽器
視圖參數(shù):
	1)一個HttpRequest的實例,一般命名為request
	2)通過ur1正則表達式傳遞過來的參數(shù)
位置:
	通常在應(yīng)用下的views.py中定義
		錯誤視圖:
			1404視圖(頁面沒找到)
			2400視圖(客戶操作錯誤)
			3) 500視圖 (服務(wù)器內(nèi)部錯誤)

HttpRequest

服務(wù)器在接收到Http請求后,會根據(jù)報文創(chuàng)建HttpRequest對象
視圖中的第一個參數(shù)就是HttpRequest對象
Django框架接收到http請求之后會將http請求包裝為HttpRequest對象,之后傳遞給視圖。

request常用屬性和方法
	屬性:
		path	請求的完整路徑
		method 	請求的方法,常用GET,POST
		GET		類似字典的參數(shù),包含了get的所有參數(shù)
		POST	類似字典的參數(shù),包含了post所有參數(shù)
		FILES	類似字典的參數(shù),包含了上傳的文件
		COOKIES	字典,包含了所有COOKIE
		session	類似字典,表示會話
		META['REMOTE_ADDR']
	方法:
		is_ajax()	判斷是否是ajax(),通常用在移動端和JS中
		get_full_path()	返回包含參數(shù)字符串的請求路徑
QueryDict:	類字典的對象
	類似字典的數(shù)據(jù)結(jié)構(gòu)。與字典的區(qū)別:可以存在相同的鍵。
	QueryDict中數(shù)據(jù)獲取方式
		dict['uname']dict.get('uname')
		獲取指定key對應(yīng)的所有值
		dict.getlist('uname')

HttpResponse

服務(wù)器返回給客戶端的數(shù)據(jù)
HttpResponse由程序員自己創(chuàng)建
	1)不使用模板,直接調(diào)用HttpResponse(),返回HttpResponse對象。
	2)調(diào)用模板,進行渲染。
	使用render
		render(request,template_name[,context])
		request			請求體對象
		template_name	模板路徑
		context			字典參數(shù),用來填坑

屬性: 	content		返回的內(nèi)容
		charset		編碼格式
		status_code	響應(yīng)狀態(tài)碼(2xx,3xx,4xx,5xx)

方法:
		write(xxx)		直接寫出文本
		flush()			沖刷緩沖區(qū)
		set_cookie(key,value='xxx',max_age=None)	設(shè)置cookie
		delete_cookie(key)		刪除cookie

HttpResponse子類
	HttpResponseRedirect
		響應(yīng)重定向:可以實現(xiàn)服務(wù)器內(nèi)部跳轉(zhuǎn)
		return HttpResponseRedict('/grade/2030')
		使用的時候推薦使用反向解析
	JsonResponse
		返回Json數(shù)據(jù)的請求,通常用在異步請求上
			JsonResponse(dict)
			返回json數(shù)據(jù)時,Content-type是application/json

實踐

新建一個項目 Day05DjangoPro,創(chuàng)建一個應(yīng)用 叫App

Django視圖-HttpRequest請求對象和HttpResponse響應(yīng)對象,# Django4,django,python
不寫子路由啦,直接寫根路由Day05DjangoPro\urls.py

from django.contrib import admin
from django.urls import path
from App.views import *

urlpatterns = [
    path('myrequest/',my_request),
    path('admin/', admin.site.urls),
]

App\views.py

from django.shortcuts import render, HttpResponse


# 請求
def my_request(request):
    print(request)   # 請求對象
    # <WSGIRequest: GET '/myrequest/'>
    return HttpResponse('ok')

http://127.0.0.1:8000/myrequest/

打印得到的是<WSGIRequest: GET ‘/myrequest/’>
WSGIRequest是什么?我們可以看一下
Django視圖-HttpRequest請求對象和HttpResponse響應(yīng)對象,# Django4,django,python
WSGIRequest 繼承 HttpRequest ,HttpRequest 再點開看一下
Django視圖-HttpRequest請求對象和HttpResponse響應(yīng)對象,# Django4,django,python
QueryDict 繼承 MultiValueDict,MultiValueDict繼承 dict字典,所以QueryDict 可以當(dāng)成字典來用。QueryDict 是一個 類字典對象。

request對象的屬性和方法

App\views.py

from django.shortcuts import render, HttpResponse


# 請求
def my_request(request):
    print(request)  # 請求對象
    # <WSGIRequest: GET '/myrequest/'>

    # request對象的屬性和方法
    print(request.method)  # 請求方式,GET,POST...
    print(request.GET)  # GET請求的參數(shù) <QueryDict: {'name': ['清風(fēng)'], 'age': ['18']}>
    print(request.GET['name'])  # 第一種方式,如果沒有就會報錯
    print(request.GET.get('name', default='匿名用戶'))  # 第二種方式,如果沒有就會返回None或者默認(rèn)值(跟字典一樣dict),不會報錯,推薦使用這種方式
    print(request.GET.getlist('name'))  # 第三種,如果name有多個值,則都會獲取,以列表[]的形式返回,沒有數(shù)據(jù)就返回空列表[]
    # print(request.POST)  # POST請求的參數(shù) <QueryDict: {}>
    # print(request.POST.get('name', default='匿名用戶')) # 也是一樣的

    print(request.path)  # 路徑,就是我們寫的路由 /myrequest/
    print(request.get_full_path())  # 整個路徑  /myrequest/?age=18&name=%E6%B8%85%E9%A3%8E&name=%E5%BE%AE%E6%B3%AB

    return HttpResponse('ok')

http://127.0.0.1:8000/myrequest/?age=18&name=清風(fēng)&name=微泫

Django視圖-HttpRequest請求對象和HttpResponse響應(yīng)對象,# Django4,django,python

此外還有…

# 請求
def my_request(request):
    print(request)  # 請求對象
    print(request.COOKIES)  # cookie 會話技術(shù)
    # {'csrftoken': 'lvQaYuMDgiemswhYomZXc1msPaoSS35J'}
    print(request.session)  # session 會話
    # <django.contrib.sessions.backends.db.SessionStore object at 0x0000023890CB3890>
    print(request.FILES)  # 文件,前端上傳的文件對象
    print(request.META['REMOTE_ADDR'])  # 客戶端的IP地址

    return HttpResponse('ok')

響應(yīng)

Day05DjangoPro\urls.py

path('myresponse/', my_response),

App\views.py

from django.http import JsonResponse
from django.shortcuts import render, HttpResponse, redirect, reverse, HttpResponseRedirect


def my_response(request):
    # 1. 返回字符串:企業(yè)項目中使用很少
    # return HttpResponse('ok')

    # 2. 返回模板:前后端不分離的時候使用
    # return render(request, 'index.html', {'key1': 'value1', 'key2': 'value2'})

    # 3. 重定向: 頁面跳轉(zhuǎn)用的,路徑的跳轉(zhuǎn)
    # redirect 和 HttpResponseRedirect是一樣的
    # return redirect("https://blog.csdn.net/weixin_59633478/category_12401835.html")
    # return redirect("/request/")
    # return HttpResponseRedirect("/request/")
    # redirect(reverse("命名空間:userdetail", args=(2,)))
    # return redirect(reverse("App:userdetail", kwargs={'uid': 2}))

    # 4. 返回JSON: 前后端分離的情況使用
    return JsonResponse({
        'data': 123
    })


# 請求
def my_request(request):
    print(request)  # 請求對象
    # <WSGIRequest: GET '/myrequest/'>

    # request對象的屬性和方法
    # print(request.method)  # 請求方式,GET,POST...
    # print(request.GET)  # GET請求的參數(shù) <QueryDict: {'name': ['清風(fēng)'], 'age': ['18']}>
    # print(request.GET['name'])  # 第一種方式,如果沒有就會報錯
    # print(request.GET.get('name', default='匿名用戶'))  # 第二種方式,如果沒有就會返回None或者默認(rèn)值(跟字典一樣dict),不會報錯,推薦使用這種方式
    # print(request.GET.getlist('name'))  # 第三種,如果name有多個值,則都會獲取,以列表[]的形式返回,沒有數(shù)據(jù)就返回空列表[]
    # # print(request.POST)  # POST請求的參數(shù) <QueryDict: {}>
    # # print(request.POST.get('name', default='匿名用戶')) # 也是一樣的
    #
    # print(request.path)  # 路徑,就是我們寫的路由 /myrequest/
    # print(request.get_full_path())  # 整個路徑  /myrequest/?age=18&name=%E6%B8%85%E9%A3%8E&name=%E5%BE%AE%E6%B3%AB

    print(request.COOKIES)  # cookie 會話技術(shù)
    # {'csrftoken': 'lvQaYuMDgiemswhYomZXc1msPaoSS35J'}
    print(request.session)  # session 會話
    # <django.contrib.sessions.backends.db.SessionStore object at 0x0000023890CB3890>
    print(request.FILES)  # 文件,前端上傳的文件對象
    print(request.META['REMOTE_ADDR'])  # 客戶端的IP地址

    return HttpResponse('ok')

Django視圖-HttpRequest請求對象和HttpResponse響應(yīng)對象,# Django4,django,python


Django視圖-HttpRequest請求對象和HttpResponse響應(yīng)對象,# Django4,django,python
其實render返回的也是HttpResponse,只不過我們通過render_to_string方法將我們模板也就是html和內(nèi)容加進去,在它內(nèi)部會將html內(nèi)容、模板語法 和 發(fā)過去的數(shù)據(jù) 進行結(jié)合做渲染,渲染之后得到的content其實是一個可能很長的html數(shù)據(jù),所以返回的也是一個字符串。


App\views.py

def my_response(request):
    response = HttpResponse('ok')
    response.content = 'hello'
    response.status_code = 400
    return response

Django視圖-HttpRequest請求對象和HttpResponse響應(yīng)對象,# Django4,django,python文章來源地址http://www.zghlxwxcb.cn/news/detail-663601.html

到了這里,關(guān)于Django視圖-HttpRequest請求對象和HttpResponse響應(yīng)對象的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • django中的請求和響應(yīng)

    django中的請求和響應(yīng)

    django中的請求是 被封裝到HttpRequest的對象當(dāng)中 當(dāng)一個請求過來 django會根據(jù)路由url 匹配 匹配以后執(zhí)行響應(yīng)的視圖函數(shù) 視圖函數(shù)的第一個參數(shù)request 就是HttpRequest 當(dāng)一個請求過來 /app/page/1 url匹配 urls.py 視圖函數(shù)的執(zhí)行 views.py request就是封裝的HttpRequest 請求對象 django的響應(yīng) 使用

    2024年02月10日
    瀏覽(19)
  • 【Django】Django4.1.2使用xadmin避坑指南

    換成Django4版本使用xadmin真是需要巨大勇氣。 win10 python3.9.0 django4.1.2 解決辦法: 如果正常安裝了xadmin庫的話,six庫也會安裝,把 項目根目錄/venv/Lib/site-packages/six.py 復(fù)制到 項目根目錄/venv/Lib/site-packages/django/utils 下即可。 分析: Django已經(jīng)棄用 ugettext(), ugettext_lazy(), ugettext_noo

    2023年04月08日
    瀏覽(967)
  • Django自定義視圖類及實現(xiàn)請求參數(shù)和返回參數(shù)加解密

    Django自定義視圖類及實現(xiàn)請求參數(shù)和返回參數(shù)加解密

    ? 定義的數(shù)據(jù)庫模型,也就是models.py的模型 ? 序列化文件?serializer.py? ? 然后新建一個視圖文件 依次繼承g(shù)et、post、put、delete,實現(xiàn)查、增、改、刪。 ? ? ? 接下來對請求參數(shù),及返回參數(shù)進行加密,加解密可以看我之前的文章 先新建一個MyResponse.py,自定義自己的返回類

    2024年02月06日
    瀏覽(23)
  • 執(zhí)行HttpResponse的請求阻塞太久的處理方法

    執(zhí)行 HttpResponse 的請求 阻塞太久 : 設(shè)置請求連接超時時間 :在HttpRequest.post()方法后,使用 connectTimeout() 方法設(shè)置連接超時時間。例如:.connectTimeout(3000)表示設(shè)置連接超時時間為3秒。這樣可以防止連接超時等待時間過長。 設(shè)置響應(yīng)讀取超時時間 :在HttpRequest.post()方法后,使

    2024年02月15日
    瀏覽(10)
  • 【Django學(xué)習(xí)】(十一)APIView_請求與響應(yīng)_GenericAPIView

    【Django學(xué)習(xí)】(十一)APIView_請求與響應(yīng)_GenericAPIView

    ? 繼承DRF中APIView之后,那么當(dāng)前視圖就具備了認(rèn)證、授權(quán)、限流等功能 ?繼承DRF中APIView之后,每一個實例方法中的request為Request對象 ?Request類拓展了Django中的HttpRequest類,具備很多額外優(yōu)秀的功能 Request類與HttpRequest類中的所有功能兼容 查詢字符串參數(shù): request.GET、request.q

    2024年02月13日
    瀏覽(16)
  • 詳解Django請求與響應(yīng):深入理解Web Http交互的核心機制

    本文深入探討了 Django 中的請求與響應(yīng)處理,從 Django 請求和響應(yīng)的基礎(chǔ)知識、生命周期,到 HttpRequest 和 HttpResponse 對象的詳細介紹。同時,討論了 Django 的視圖和請求、響應(yīng)處理,以及安全性和異步處理的考慮。最后,對比了 Django 與 Flask、FastAPI 等框架在請求響應(yīng)處理上的異

    2024年02月13日
    瀏覽(23)
  • arm架構(gòu),django4.2.7適配達夢8數(shù)據(jù)庫

    arm架構(gòu),django4.2.7適配達夢8數(shù)據(jù)庫

    Django ? ? ? ? ? ? ? ? ? ? ? ?4.2.7 django-dmPython ? ? ? ? ? ? ? 3.1.7 dmPython ? ? ? ? ? ? ? ? ? ? ?2.5.5 DM Database Server 64 V8 DB Version: 0x7000c 適配過程中發(fā)現(xiàn)的問題如下: 解決方法:將django_dmPython和django_dmPython-3.1.7.dist-info復(fù)制一份,放到django下面的db/backends/目錄下,因此后面

    2024年04月29日
    瀏覽(96)
  • HttpRequest發(fā)送網(wǎng)絡(luò)請求POST/GET

    會返回你需要的數(shù)據(jù),類型為String HttpRequest.get獲取網(wǎng)絡(luò)發(fā)過來的String類型的數(shù)據(jù),如需獲取里面的某一參數(shù),需對數(shù)據(jù)進行解析。解析方式如下: 示例接收到的String類型轉(zhuǎn)JSON后格式: ?解析:

    2024年01月19日
    瀏覽(23)
  • 遙遙領(lǐng)先,免費開源的django4-vue3前后端分離項目

    遙遙領(lǐng)先,免費開源的django4-vue3前后端分離項目

    本項目前端基于當(dāng)下流行且常用的vue3作為主要技術(shù)棧進行開發(fā),融合了typescript和element-plus-ui,提供暗黑模式和白晝模式兩種主題以及全屏切換,開發(fā)bug少,簡單易學(xué),項目后端采用了python的django框架作為開發(fā)模塊。 目前正在搭建到網(wǎng)絡(luò)服務(wù)器中。項目會不定期更新喜歡的朋

    2024年02月04日
    瀏覽(116)
  • django4版本提示 django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26)

    django4版本提示 django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26)

    我最近學(xué)習(xí)django的時,執(zhí)行python manage.py migrate報錯如下: django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26). 看信息是本地的mysql版本比較低,百度了以后發(fā)現(xiàn)Django 3.2及更高版本需要MySQL 8.0.25或更高版本,我本地的mysql版本就是5.7.26。但是我不想再裝了怎么辦?把m

    2024年02月05日
    瀏覽(89)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包