91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django之請求生命周期及FBV/CBV模式

發布時間:2020-07-09 06:05:24 來源:網絡 閱讀:6283 作者:易水寒月 欄目:編程語言

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

二.FBV及CBV模式
FBV:function-views模式,也是常用的url對應views.py中對應的函數;
CBV:class-views模式,是不常用的url對應views.py中對應的類的模式;
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的單獨使用
            # 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):
    # 這個函數(了解作用即可,可不寫)作用類似于裝飾器,參數*args, **kwargs代表可傳進去多個參數
    def dispatch(self, request, *args, **kwargs):
        # 重寫dispatch方法,相當于執行get/post方法(關鍵看傳來的是那種請求方式,如果是get請求方式,就執行get方法)
        result = super(CLOGIN,self).dispatch(request, *args, **kwargs)
        return result

    # 函數名只能是get,一旦有get請求發來,就執行此函數
    def get(self,request):
        return render(request, 'login.html')

    # 函數名只能是post,一旦有post請求發來,就執行此函數
    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請求方式不同:
瀏覽器默認的方式是get形式,也是說只要不規定post請求,瀏覽器都是以get方式請求。post請求只有通過form表單和ajax實現。
三.歡迎關注筆者公眾號
Django之請求生命周期及FBV/CBV模式

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高邑县| 五常市| 新闻| 沾益县| 泰顺县| 阿坝县| 霍林郭勒市| 宁都县| 萝北县| 子洲县| 龙里县| 义马市| 漯河市| 城市| 白玉县| 沂水县| 游戏| 大名县| 武城县| 两当县| 蓬莱市| 郁南县| 宁河县| 永和县| 石首市| 峨眉山市| 清流县| 勐海县| 渭源县| 平湖市| 新余市| 仁寿县| 灵山县| 西华县| 鹤壁市| 阳东县| 临清市| 合江县| 信丰县| 霍州市| 吴旗县|