国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django Rest framework之認(rèn)證的實(shí)現(xiàn)代碼

2020-02-16 00:09:45
字體:
供稿:網(wǎng)友

django rest framework 官網(wǎng)

在學(xué)習(xí)django rest framework(下面簡稱drf)之前需要知道

對RESTful API設(shè)計(jì)有一定了解 對django框架有一定認(rèn)識,本身drf就是基于django做的 對python面向?qū)ο缶幊逃辛私猓╠rf會(huì)對一些原生的django類做封裝)

一、前言

在學(xué)習(xí)drf之前的時(shí)候,先簡單說一下需要的預(yù)備知識。在django中,路由匹配之后,會(huì)進(jìn)行路由分發(fā),這個(gè)時(shí)候會(huì)有兩種選擇模式的選擇。也就是FBVCBV

1、FBV

fbv就是在url中一個(gè)路徑對應(yīng)一個(gè)函數(shù)

urlpatterns = [  url(r'^admin/', admin.site.urls),  url(r'^index/', views.index)]

在視圖函數(shù)中

def index(request):  return render(request, 'index.html')

2、CBV

cbv就是在url中一個(gè)路徑對應(yīng)一個(gè)類,drf主要使用CBV

urlpatterns = [  url(r'^admin/', admin.site.urls),  url(r'^index/', views.IndexView.as_view())   # 執(zhí)行類后面的as_view()方法,是父類里面的方法]

在視圖函數(shù)中

from django.views import Viewclass IndexView(View):   # 以get形式訪問會(huì)執(zhí)行g(shù)et函數(shù),一般情況下獲取數(shù)據(jù)  def get(self, *args, **kwargs):     return HttpResponse('666')     # 以post形式訪問的話會(huì)執(zhí)行post函數(shù),一般情況下發(fā)送數(shù)據(jù)  def post(self, *args, **kwargs):     return HttpResponse('999')

我們在路由匹配的時(shí)候看到url(r'^index/', views.IndexView.as_view()),那這個(gè)as_view()是什么,既然我們在視圖類中沒有定義這個(gè)as_view()方法,就應(yīng)該到父類(也就是IndexView的父類View)中看一下View。以下是django源碼,路徑是/django/views/generic/base.py,

class View:  http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace'] # 支持的各種http方法  def __init__(self, **kwargs):     pass  @classonlymethod  def as_view(cls, **initkwargs): # url路由匹配進(jìn)入as_view方法    def view(request, *args, **kwargs):      return self.dispatch(request, *args, **kwargs) # 返回dispath方法    return view  def dispatch(self, request, *args, **kwargs): # dispath方法是drf的關(guān)鍵,dispath方法會(huì)通過反射,通過請求的方法,分發(fā)到各個(gè)視圖類的方法中    pass

3、django的請求周期

因此根據(jù)CBV和FBVdjango的生命周期可以又兩類

FBV:請求通過uwsgi網(wǎng)關(guān),中間件,然后進(jìn)入路由匹配,進(jìn)入視圖函數(shù),連接數(shù)據(jù)庫ORM操作,模板渲染,返回經(jīng)過中間件,最終交給瀏覽器response字符串。

CBV:請求通過uwsgi網(wǎng)關(guān),中間件,然后進(jìn)入路由匹配,這里就與FBV有區(qū)別了,因?yàn)椴辉偈窃噲D函數(shù)而是視圖類,說的詳細(xì)一點(diǎn),先經(jīng)過父類View的dispath方法,進(jìn)行請求方法的判斷,在分發(fā)到視圖類的方法,連接數(shù)據(jù)庫ORM操作,模板渲染,返回經(jīng)過中間件,最終交給瀏覽器response字符串。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 德令哈市| 得荣县| 错那县| 金山区| 开远市| 天津市| 沙田区| 噶尔县| 水富县| 黄冈市| 二连浩特市| 闵行区| 永丰县| 武鸣县| 当阳市| 永嘉县| 汉寿县| 板桥市| 天镇县| 德保县| 姚安县| 股票| 多伦县| 若羌县| 西贡区| 康保县| 惠东县| 虎林市| 滦平县| 金坛市| 宁德市| 济源市| 玉溪市| 南充市| 酉阳| 三都| 赫章县| 潼南县| 靖江市| 巴中市| 克什克腾旗|