欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Django之請(qǐng)求生命周期及FBV/CBV模式-創(chuàng)新互聯(lián)

一.Http請(qǐng)求的過(guò)程
1.http的請(qǐng)求/響應(yīng)模式,先是用戶通過(guò)前端頁(yè)面發(fā)送一個(gè)http請(qǐng)求,請(qǐng)求內(nèi)容包括三部分:請(qǐng)求頭/空行/請(qǐng)求體(get方法沒(méi)有請(qǐng)求體)
例如:
Django之請(qǐng)求生命周期及FBV/CBV模式
抓包如下:
Django之請(qǐng)求生命周期及FBV/CBV模式
2.服務(wù)端就收到http的請(qǐng)求內(nèi)容的字符串后,進(jìn)行解析出相應(yīng)的請(qǐng)求頭(method /url/cookie等信息 )和請(qǐng)求體內(nèi)容,并將請(qǐng)求體的內(nèi)容轉(zhuǎn)換成對(duì)應(yīng)的key-value格式。
3.服務(wù)端再通過(guò)url去匹配對(duì)應(yīng)的URL路由(匹配規(guī)則是從上向下進(jìn)行正則匹配,若匹配成功則停止不再向下匹配),匹配成功后找到views中對(duì)應(yīng)的函數(shù)或類,執(zhí)行對(duì)應(yīng)函數(shù)或類中的業(yè)務(wù)代碼,處理成功后則進(jìn)行響應(yīng)的返回;
4.返回的形式有三種:render(request,’*.html’,locals())/HttpResponse(‘字符’)/redirect(‘/url/’)
注意:HttpResponse()是直接返回字符串給前端瀏覽器進(jìn)行顯示;render()分為三步:a.返回字符串;b.替換(渲染)變量;c.返回給瀏覽器;redirect()是先去匹配需要跳轉(zhuǎn)的url,再去匹配跳轉(zhuǎn)的url再去重復(fù)render()的過(guò)程;
5.前端收到響應(yīng),響應(yīng)的字符串內(nèi)容也是包含三部分:響應(yīng)頭/空行/響應(yīng)體。之后瀏覽器再去渲染返回的響應(yīng)體展示給用戶看。
Django之請(qǐng)求生命周期及FBV/CBV模式

巫山網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)

二.FBV及CBV模式
FBV:function-views模式,也是常用的url對(duì)應(yīng)views.py中對(duì)應(yīng)的函數(shù);
CBV:class-views模式,是不常用的url對(duì)應(yīng)views.py中對(duì)應(yīng)的類的模式;
FBV模式:

urlpatterns = [
    # path('admin/', admin.site.urls),
    # url(r'^login/',views.login,name = 'login'),
    url(r'^mainmenu/',views.mainmenu,name = 'mainmenu'),#FBV模式
    url(r'^login/',views.CLOGIN.as_view(),name = 'mainmenu'),#CBV模式
]

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

from django.shortcuts import render,redirect
# Create your views here.
from django.views import View
def login(request):
    if request.method == 'POST':
        if request.POST.get('username') == 'admin' and request.POST.get('pwd') == 'admin':
            #session的使用
            request.session['username'] = request.POST.get('username')
            request.session['pwd'] = request.POST.get('pwd')
            return redirect('/mainmenu/')
            #cookie的單獨(dú)使用
            # ret = redirect('/mainmenu/')
            # ret.set_cookie('username',request.POST.get('username'))
            # return  ret
        else:
            return render(request, 'login.html')
    else:
        return render(request, 'login.html')

CBV模式:

urlpatterns = [
    # path('admin/', admin.site.urls),
    # url(r'^login/',views.login,name = 'login'),
    url(r'^mainmenu/',views.mainmenu,name = 'mainmenu'),#FBV模式
    url(r'^login/',views.CLOGIN.as_view(),name = 'mainmenu'),#CBV模式
]

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

from django.shortcuts import render,redirect
# Create your views here.
from django.views import View
class CLOGIN(View):
    # 這個(gè)函數(shù)(了解作用即可,可不寫)作用類似于裝飾器,參數(shù)*args, **kwargs代表可傳進(jìn)去多個(gè)參數(shù)
    def dispatch(self, request, *args, **kwargs):
        # 重寫dispatch方法,相當(dāng)于執(zhí)行g(shù)et/post方法(關(guān)鍵看傳來(lái)的是那種請(qǐng)求方式,如果是get請(qǐng)求方式,就執(zhí)行g(shù)et方法)
        result = super(CLOGIN,self).dispatch(request, *args, **kwargs)
        return result

    # 函數(shù)名只能是get,一旦有g(shù)et請(qǐng)求發(fā)來(lái),就執(zhí)行此函數(shù)
    def get(self,request):
        return render(request, 'login.html')

    # 函數(shù)名只能是post,一旦有post請(qǐng)求發(fā)來(lái),就執(zhí)行此函數(shù)
    def post(self,request):
        if request.POST.get('username') == 'admin' and request.POST.get('pwd') == 'admin':
            # session的使用
            request.session['username'] = request.POST.get('username')
            request.session['pwd'] = request.POST.get('pwd')
            return redirect('/mainmenu/')
        else:
            return render(request, 'login.html')

POST/GET請(qǐng)求方式不同:
瀏覽器默認(rèn)的方式是get形式,也是說(shuō)只要不規(guī)定post請(qǐng)求,瀏覽器都是以get方式請(qǐng)求。post請(qǐng)求只有通過(guò)form表單和ajax實(shí)現(xiàn)。
三.歡迎關(guān)注筆者公眾號(hào)
Django之請(qǐng)求生命周期及FBV/CBV模式

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

名稱欄目:Django之請(qǐng)求生命周期及FBV/CBV模式-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://chinadenli.net/article12/deegdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、外貿(mào)網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作、自適應(yīng)網(wǎng)站、品牌網(wǎng)站建設(shè)網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)