<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      DRF前置及初識

      Posted on 2022-11-27 21:36  呱呱呱呱嘰里呱啦  閱讀(19)  評論(0)    收藏  舉報

      DRF前置及初識

      WEB應用(開發)模式

      API接口

      # 即通過網絡,規定了前后臺信息交互規則的URL鏈接,也就是前后臺信息交互的媒介
      

      postman的使用

      # 一個用于發送http請求的工具
      # params get方式就是請求地址中的參數,post方式就是請求體中的參數
      
      # headers 即請求頭
      
      # body 編碼格式等
      

      Restful規范

      # 10條規范
      '''
      1.數據的安全保障,采用https
      2.接口的特征表現,即使用api關鍵字標識接口url
      3.多數據版本共存,在url鏈接中標識數據版本
      4.數據即資源,使用名詞
      5.資源操作由請求方式確定
      6.過濾,即通過URL傳參的方式傳遞搜索條件
      7.響應狀態碼
      8.錯誤處理,對錯誤應返回錯誤信息
      9.返回結果符合規范
      10.響應的數據里面可以帶鏈接
      '''
      

      drf安裝和使用

      # settings INSTALLED APP中引入drf:'rest_framework'
      
      # 配置數據庫
      
      # 在models.py中寫表模型
      class Book(models.Model):
      
      
      # 新建一個python文件,書寫與上述模型對應的序列化類
      from rest_framework.serializers import ModelSerializer
      from app01.models import Book
      
      class BookModelSerializer(ModelSerializer):
          class Meta:
              model = Book
              fields = '__all__'
      
      # 在視圖中寫視圖類
      from rest_framework.viewsets import ModelViewSet
      from .models import Book
      from .ser import BookModelSerializer
      class BooksViewSet(ModelViewSet):
          queryset = Book.objects.all()
          serializer_class = BookModelSerializer
      
      # 配置路由關系
      from app01 import views
      from rest_framework.routers import DefaultRouter
      router = DefaultRouter()
      router.register('books',views.BooksViewSet)
      
      urlpatterns += router.urls
      

      CBV源碼

      # ModelViewSet繼承View(django原生View類)
      # ModelViewSet>GenericViewSet>GenericAPIView>APIView>View
      
      path('',views.Book.as_view()), # 此處應放函數內存地址
      self.dispatch()
      

      View源碼

      '''
      dispatch邏輯:
      判斷是否在常規請求類型中,如果在:
      通過反射拿到自定義類視圖函數中的具體方法的對應地址(默認not_allowed)給handler
      如果不在,拿not_allowed內存地址給handler
      return handler(request,*args,**kwargs)
      即到此執行FBV
      '''
      

      APIView源碼

      from rest_framework.views import APIView
      # 局部禁用csrf,可以使用csrf_exempt(視圖函數)
      # APIView重寫了as_view和dispatch方法
      # APIView的as_view直接調用View中的as_view,然后封裝進新的屬性
      # 在as_view return view后,路由匹配成功,view()會執行,并返回self.dispatch,根據MRO列表會自動選擇APIView中的dispatch方法,該方法會將原來的request通過自定義的Request類封裝進新的屬性并返回新的request對象,通過request._request調用原request對象可以驗證(僅驗證),經過封裝的新request對象使用原對象的屬性,這是因為自定義的Request類重寫了__getattr__方法,將self._request也就是原對象的屬性返回了。
      

      新request對象

      # 無論post請求發送了什么格式的數據,都可以從request.data中取出相應的數據(FILES仍可用)
      # 對于get請求,可以從request.query_params(內部通過裝飾器將方法偽裝成的屬性)取出
      

      主站蜘蛛池模板: 中文字幕亚洲人妻一区| 老太脱裤子让老头玩xxxxx| 国产黄大片在线观看画质优化| 中文字幕在线视频不卡一区二区| 又黄又爽又色的少妇毛片| 国产MD视频一区二区三区| 性色av 一区二区三区| 欧美男男作爱videos可播放| 亚洲综合一区国产精品| 亚洲国产色婷婷久久99精品91| 国语精品自产拍在线观看网站| 蜜臀av性久久久久蜜臀aⅴ麻豆| 国产精品人人爽人人做我的可爱| 双辽市| 国产一区二区三区麻豆视频| 55大东北熟女啪啪嗷嗷叫| 欧美最新精品videossexohd| 久久av高潮av喷水av无码| 熟女在线视频一区二区三区| 亚洲精品日本久久一区二区三区| 国产网友愉拍精品视频手机 | 中文字幕在线不卡一区二区| 99精品国产中文字幕| 深夜福利成人免费在线观看| 久久综合久中文字幕青草| 亚洲无线码中文字幕在线| 久久丫精品国产| 国产精品久久久久久久9999| 久久大香伊蕉在人线免费AV| 冀州市| 99精品国产成人一区二区| 亚洲人成小说网站色在线 | 亚洲人成电影网站色mp4| 一区二区乱子伦在线播放| 性色av不卡一区二区三区| 各种少妇wbb撒尿| 久久久综合香蕉尹人综合网 | av一本久道久久综合久久鬼色| 国产亚洲一二三区精品| 天天弄天天模| 四虎影视库国产精品一区|