成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > DRF之請求與響應的實現(xiàn)

DRF之請求與響應的實現(xiàn)

熱門標簽:銀川電話機器人電話 長春極信防封電銷卡批發(fā) 如何地圖標注公司 電銷機器人錄音要學習什么 預覽式外呼系統(tǒng) 外賣地址有什么地圖標注 煙臺電話外呼營銷系統(tǒng) 企業(yè)彩鈴地圖標注 上海正規(guī)的外呼系統(tǒng)最新報價

1 請求和響應

1.1 請求

# 請求對象
# from rest_framework.request import Request
    def __init__(self, request, parsers=None, authenticators=None,
                 negotiator=None, parser_context=None):
        # 二次封裝request,將原生request作為drf request對象的 _request 屬性
        self._request = request
    def __getattr__(self,item):
     return getattr(self._request,item)
# 請求對象.data:前端以三種編碼方式傳入的數(shù)據(jù),都可以取出來
# 請求對象..query_params 與Django標準的request.GET相同,只是更換了更正確的名稱而已。

1.2 響應

#from rest_framework.response import Response
 def __init__(self, data=None, status=None,
                 template_name=None, headers=None,
                 exception=False, content_type=None):
        
#data:你要返回的數(shù)據(jù),字典
#status:返回的狀態(tài)碼,默認是200,
 -from rest_framework import status在這個路徑下,它把所有使用到的狀態(tài)碼都定義成了常量
#template_name 渲染的模板名字(自定制模板),不需要了解
#headers:響應頭,可以往響應頭放東西,就是一個字典
#content_type:響應的編碼格式,application/json和text/html;

# 瀏覽器響應成瀏覽器的格式,postman響應成json格式,通過配置實現(xiàn)的(默認配置)
#不管是postman還是瀏覽器,都返回json格式數(shù)據(jù)
# drf有默認的配置文件---》先從項目的setting中找,找不到,采用默認的
# drf的配置信息,先從自己類中找--》項目的setting中找---》默認的找
 -局部使用:對某個視圖類有效
        -在視圖類中寫如下
        from rest_framework.renderers import JSONRenderer
        renderer_classes=[JSONRenderer,]
    -全局使用:全局的視圖類,所有請求,都有效
     -在setting.py中加入如下
        REST_FRAMEWORK = {
            'DEFAULT_RENDERER_CLASSES': (  # 默認響應渲染類
                'rest_framework.renderers.JSONRenderer',  # json渲染器
                'rest_framework.renderers.BrowsableAPIRenderer',  # 瀏覽API渲染器
            )
        }

2 視圖

# 兩個視圖基類
APIView
GenericAPIView

2.1 基于APIView寫接口

#### views.py
from rest_framework.generics import GenericAPIView
from app01.models import Book
from app01.ser import BookSerializer
# 基于APIView寫的
class BookView(APIView):
    def get(self,request):
        book_list=Book.objects.all()
        book_ser=BookSerializer(book_list,many=True)

        return Response(book_ser.data)
    def post(self,request):
        book_ser = BookSerializer(data=request.data)
        if book_ser.is_valid():
            book_ser.save()
            return Response(book_ser.data)
        else:
            return Response({'status':101,'msg':'校驗失敗'})


class BookDetailView(APIView):
    def get(self, request,pk):
        book = Book.objects.all().filter(pk=pk).first()
        book_ser = BookSerializer(book)
        return Response(book_ser.data)

    def put(self, request,pk):
        book = Book.objects.all().filter(pk=pk).first()
        book_ser = BookSerializer(instance=book,data=request.data)
        if book_ser.is_valid():
            book_ser.save()
            return Response(book_ser.data)
        else:
            return Response({'status': 101, 'msg': '校驗失敗'})

    def delete(self,request,pk):
        ret=Book.objects.filter(pk=pk).delete()
        return Response({'status': 100, 'msg': '刪除成功'})
    
#models.py
class Book(models.Model):
    name=models.CharField(max_length=32)
    price=models.DecimalField(max_digits=5,decimal_places=2)
    publish=models.CharField(max_length=32)
#ser.py
class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model=Book
        fields='__all__'
# urls.py
path('books/', views.BookView.as_view()),
re_path('books/(?Ppk>\d+)', views.BookDetailView.as_view()),

2.2 基于GenericAPIView寫的接口

# views.py
class Book2View(GenericAPIView):
    #queryset要傳queryset對象,查詢了所有的圖書
    # serializer_class使用哪個序列化類來序列化這堆數(shù)據(jù)
    queryset=Book.objects
    # queryset=Book.objects.all()
    serializer_class = BookSerializer
    def get(self,request):
        book_list=self.get_queryset()
        book_ser=self.get_serializer(book_list,many=True)

        return Response(book_ser.data)
    def post(self,request):
        book_ser = self.get_serializer(data=request.data)
        if book_ser.is_valid():
            book_ser.save()
            return Response(book_ser.data)
        else:
            return Response({'status':101,'msg':'校驗失敗'})


class Book2DetailView(GenericAPIView):
    queryset = Book.objects
    serializer_class = BookSerializer
    def get(self, request,pk):
        book = self.get_object()
        book_ser = self.get_serializer(book)
        return Response(book_ser.data)

    def put(self, request,pk):
        book = self.get_object()
        book_ser = self.get_serializer(instance=book,data=request.data)
        if book_ser.is_valid():
            book_ser.save()
            return Response(book_ser.data)
        else:
            return Response({'status': 101, 'msg': '校驗失敗'})

    def delete(self,request,pk):
        ret=self.get_object().delete()
        return Response({'status': 100, 'msg': '刪除成功'})
    
 #url.py
    # 使用GenericAPIView重寫的
    path('books2/', views.Book2View.as_view()),
    re_path('books2/(?Ppk>\d+)', views.Book2DetailView.as_view()),

2.3 基于GenericAPIView和5個視圖擴展類寫的接口

from rest_framework.mixins import  ListModelMixin,CreateModelMixin,UpdateModelMixin,DestroyModelMixin,RetrieveModelMixin
# views.py
class Book3View(GenericAPIView,ListModelMixin,CreateModelMixin):

    queryset=Book.objects
    serializer_class = BookSerializer
    def get(self,request):
        return self.list(request)

    def post(self,request):
        return self.create(request)

class Book3DetailView(GenericAPIView,RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin):
    queryset = Book.objects
    serializer_class = BookSerializer
    def get(self, request,pk):
        return self.retrieve(request,pk)

    def put(self, request,pk):
        return self.update(request,pk)

    def delete(self,request,pk):
        return self.destroy(request,pk)
# urls.py
    # 使用GenericAPIView+5 個視圖擴展類  重寫的
    path('books3/', views.Book3View.as_view()),
    re_path('books3/(?Ppk>\d+)', views.Book3DetailView.as_view()),

2.4 使用ModelViewSet編寫5個接口

# views.py
from rest_framework.viewsets import ModelViewSet
class Book5View(ModelViewSet):  #5個接口都有,但是路由有點問題
    queryset = Book.objects
    serializer_class = BookSerializer
    
# urls.py
# 使用ModelViewSet編寫5個接口
    path('books5/', views.Book5View.as_view(actions={'get':'list','post':'create'})), #當路徑匹配,又是get請求,會執(zhí)行Book5View的list方法
    re_path('books5/(?Ppk>\d+)', views.Book5View.as_view(actions={'get':'retrieve','put':'update','delete':'destroy'})),

2.5 源碼分析ViewSetMixin

# 重寫了as_view
# 核心代碼(所以路由中只要配置了對應關系,比如{'get':'list'}),當get請求來,就會執(zhí)行l(wèi)ist方法
for method, action in actions.items():
    #method:get
    # action:list
    handler = getattr(self, action)
    #執(zhí)行完上一句,handler就變成了list的內(nèi)存地址
    setattr(self, method, handler)
    #執(zhí)行完上一句  對象.get=list
    #for循環(huán)執(zhí)行完畢 對象.get:對著list   對象.post:對著create

2.6 繼承ViewSetMixin的視圖類

# views.py
from rest_framework.viewsets import ViewSetMixin
class Book6View(ViewSetMixin,APIView): #一定要放在APIVIew前
    def get_all_book(self,request):
        print("xxxx")
        book_list = Book.objects.all()
        book_ser = BookSerializer(book_list, many=True)
        return Response(book_ser.data)
    
# urls.py
    #繼承ViewSetMixin的視圖類,路由可以改寫成這樣
    path('books6/', views.Book6View.as_view(actions={'get': 'get_all_book'})),

什么是正向代理,什么是反向代理

正向代理代理的對象是客戶端,反向代理代理的對象是服務端

到此這篇關于DRF之請求與響應的實現(xiàn)的文章就介紹到這了,更多相關DRF 請求與響應內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Django drf請求模塊源碼解析
  • DRF跨域后端解決之django-cors-headers的使用
  • django DRF圖片路徑問題的解決方法
  • Django DRF APIView源碼運行流程詳解
  • Django DRF認證組件流程實現(xiàn)原理詳解
  • Django drf分頁器的使用詳解

標簽:湖北 佳木斯 潮州 上饒 珠海 宜昌 西寧 盤錦

巨人網(wǎng)絡通訊聲明:本文標題《DRF之請求與響應的實現(xiàn)》,本文關鍵詞  DRF,之,請求,與,響應,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 下面列出與本文章《DRF之請求與響應的實現(xiàn)》相關的同類信息!
  • 本頁收集關于DRF之請求與響應的實現(xiàn)的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产精品欧美综合在线| 91久久精品日日躁夜夜躁欧美| 久久机这里只有精品| 欧美成人黑人xx视频免费观看| 女人高潮被爽到呻吟在线观看| 蜜桃极品自拍av| www.爱久久.com| 国产精品一区二区三区乱码| 国产精品视频第一区二区三区| 草莓视频末满18勿| 熟女俱乐部一区二区| 成人黄页在线观看| 国产欧美综合在线| 男人操女人的视频网站| 久久视频国产精品免费视频在线| 日韩网站在线免费观看| 在线播放色视频| 免费在线观看一区二区三区| 日韩精品中文字幕在线播放| 免费视频一区二区三区在线观看| 欧美性生活久久| 成年女人午夜毛片免费看| 伊人久久大香线蕉av一区二区| 日本免费资源| 久久精品一本久久99精品| 美国三级日本三级久久99| 国产成人在线视频| 成年网在线观看免费观看网址| 国产一区在线观看免费| 日本一区二区在线观看视频| 国产精品久久久一区二区三区| 极品少妇一区二区三区| 午夜影院在线| 国产精品午夜视频| 亚洲免费色视频| 中文字幕乱码中文乱码51精品| 99久久无色码| 久久99免费视频| 97在线观看视频国产| 欧美天堂一区二区三区| 欧美成人三级在线播放| 都市激情亚洲一区| 日本亚州欧洲精品不卡| 欧美午夜视频| 久久99精品国产麻豆婷婷洗澡| 免费无码一区二区三区| 精品国产乱码久久久久久蜜坠欲下| 欧美欧美黄在线二区| 日日夜夜中文字幕| 国产福利精品一区二区三区| 欧美日韩国产色综合一二三四| 黄色在线一区| 午夜欧美一区二区三区在线播放| 欧美日韩不卡| 中国一级黄色录像| 亚洲v.com| 日韩精品在线观看网站| 亚洲mv大片欧洲mv大片| 欧美一级二级三级| 欧美成人二区| 91精品福利在线一区二区三区| 欧美在线视频免费播放| 午夜精品在线看| 国产伦精品一区二区三区高清版| 国产玉足榨精视频在线观看| av成人免费在线| www.爱久久| 四虎电影院在线观看| 国产伦精品一区二区三区高清版禁| 日韩在线激情视频| 亚洲乱码国产乱码精品精软件| 国产一区二区在线| 久久久久久久成人| 网友自拍亚洲| 特级丰满少妇一级aaaa爱毛片| 在线观看日本视频| 久久久久久穴| 色视频一区二区三区| 国产欧美精品一区二区三区-老狼| 国产在线观看不卡一区二区三区| 久久在线免费视频| 国产高清自拍99| h视频在线免费观看| 伊人久久精品一区二区三区| 国产一区二区视频在线免费观看| 99国产精品免费视频观看| 另类视频在线观看| 免费成人深夜夜行网站视频| 男人天堂欧美日韩| 亚洲国产精品久久久久秋霞不卡| 欧美另类69xxx| 福利h视频在线| 国产亚洲一区二区在线观看| 精品国产污污免费网站入口| 亚洲精品影视在线观看| 亚洲欧美小说色综合小说一区| 婷婷中文字幕综合| a优女a优女片| 成人性生交大片免费观看嘿嘿视频| 黄色成人91| 午夜影视日本亚洲欧洲精品| 免费大片在线观看| 免费色视频在线观看| 亚洲a∨日韩av高清在线观看| 粉嫩av懂色av蜜臀av分享| 狠狠色噜噜狠狠狠狠色吗综合| 国产精品亲子伦av一区二区三区| 美腿丝袜亚洲三区| 精品1卡二卡三卡四卡老狼| aaa日本高清在线播放免费观看| 欧美精选视频在线观看| 欧美国产97人人爽人人喊| 日韩视频中文字幕在线观看| 国产精品69xx| xfplay资源站夜色先锋| 亚洲av人无码激艳猛片服务器| www国产精品com| www.国产精| 天堂中文在线资源| 国外男同性恋在线看| 波多野结衣天堂| 免费一级片在线观看| 偷窥自拍欧美色图| 免费激情视频网站| 天天干中文字幕| 欧美激情喷水| 永久亚洲成a人片777777| 亚洲传媒在线| 性猛交富婆╳xxx乱大交天津| 国产免费黄色小视频| 欧美另类bbbxxxxx另类| 欧美午夜女人视频在线| 日韩在线中文字幕| 欧美福利影院| 日韩小视频在线播放| 污片在线观看一区二区| 91超碰碰碰碰久久久久久综合| 欧美日韩国产综合草草| 欧美肥婆xxxx欧美另类| 看片网址国产福利av中文字幕| 可以免费看不卡的av网站| 国产精选一区二区三区不卡催乳| 国产露出视频在线观看| 第一次破处视频| 黄色影院一级片| 免费拍拍拍网站| 日韩国产综合| 不卡的av电影在线观看| 亚洲精美色品网站| 亚洲免费在线视频观看| 99热播在线观看| xxxx欧美| 97在线视频免费看| 中国人与牲禽动交精品| 久久草.com| 你懂的视频在线观看资源| 欧美电影免费观看| 国产又色又爽又黄的| 成人动漫免费在线观看| 欧美理论片在线播放| 亚洲视频免费观看| 91精品高清| 丁香婷婷在线观看| 欧美日日夜夜| 日韩在线视频国产| 嫩模一区二区三区| 久久精品91| 国产精品久久久久aaaa樱花| 国产精品嫩草在线观看| 香蕉精品久久| 激情综合亚洲精品| 99亚洲国产精品| 国产日韩专区| 日韩欧美在线观看一区二区三区| 女人高潮特级毛片| 日韩视频免费观看高清完整版在线观看| 国产同性人妖ts口直男| 午夜精品久久久久久久99热影院| 日本中文字幕在线2020| 中文字幕精品久久久久| 国产在线一在线二| 日韩av手机版| 精品国产乱码久久久久久久软件| 国产高清在线观看| 欧美成人国产| 亚洲乱码日产精品bd在线观看| 国产精品影音先锋| 肥婆老bbb肥婆bbbbb| 亚洲图片另类小说| 三上悠亚免费在线观看| 国产爆乳无码一区二区麻豆| 在线观看av网站| 小明精品国产一区二区三区| 爱爱视频网站免费| 狠狠激情五月综合婷婷俺| 一级做a爰片久久毛片16| 一二三四国产精品| 91精品91久久久中77777| 手机在线理论片| 日韩欧美第一区| 午夜老司机在线观看| 婷婷激情四射五月天| 天天干天天干天天干天天干天天干| 人人玩人人添人人澡欧美| www.黄色av| 国产有码一区二区| 色一情一交一乱一区二区三区| 亚洲图片欧美一区| 极品少妇xxxx精品少妇偷拍| 国产精品成人aaaa在线| 欧美美女一区二区三区| 国产精品久久久久永久免费看| 岛国精品资源网站| 99精品久久免费看蜜臀剧情介绍| 天堂国产一区二区三区| 天堂v在线视频| 性猛交xxxx乱大交孕妇印度| 精品一区二区三区影院在线午夜| 色视频在线观看免费| 午夜一区二区三区在线观看| 一级片视频在线观看| 亚洲成人影院在线观看| 丁香花视频在线观看| 波多野结衣一区二区| 这里视频有精品| 成人做爰69片免费看网站| 老妇喷水一区二区三区| 国产精品一区2区3区| 操你啦视频分享| 欧美日韩高清在线一区| 欧美视频xxxx| 麻豆国产在线视频| 天天躁日日躁狠狠躁喷水| 久久精品国产欧美激情| 欧美一区二区三区高清视频| 成人性色av| 国产精品久久久久影院老司| 日日摸夜夜爽人人添| 亚洲国产中文字幕久久网| 在线免费一级片| 91久久国产视频| 国产精品高清无码在线观看| 污污的视频在线免费观看| 日本福利一区二区三区| 精品久久人妻av中文字幕| 中文字幕免费在线观看| 国产精品久久久久久久久毛片| segui88久久综合9999| a在线观看视频| 99国内精品久久| 蜜桃精品成人影片| 国产麻豆精品视频一区二区| 精品乱码一区内射人妻无码| 亚洲一区二区自偷自拍| 日韩专区第三页| 国产亚洲a∨片在线观看| 日韩精品久久久久久| 欧美日韩电影一区二区| 暖暖在线中文免费日本| 久久99久久| 黄色av免费| 欧美在线观看一二区| 欧美黑人粗大| 99精品国产在热久久下载| 日韩电影毛片| 精品国产青草久久久久福利| 久久精品一区四区| 免费人成在线观看网站| 99国产精品99久久久久久粉嫩| 日韩毛片免费观看| 日韩一级免费| 亚洲欧美日韩中文播放| 国产三级精品三级在线观看| 国产精品久久久久久久久久久新郎| 精品欧美一区二区在线观看视频| av在线app| 亚洲精品国产一区黑色丝袜| 香蕉av777xxx色综合一区| 一区二区欧美久久| 久久精品国产一区二区三区日韩| 精品久久一二三| 真实国产乱子伦对白视频| 18禁免费观看网站| 性欧美大战久久久久久久| 成人欧美一区二区三区白人| 免费高清在线观看电视| 开心激情综合| 国产精品网站导航| jizzjizz4| 加勒比久久高清| 日韩av在线看免费观看| 欧美日韩在线免费| 国产污视频在线播放| 天堂av在线网| 国产精品久久久久久久岛一牛影视| 91国产成人在线| 黄色免费直接看| 久久先锋资源| 日本在线免费观看一区| 成人黄色片免费| 午夜在线免费视频| 欧美人与性禽动交精品| 成人一级片免费看| 国产精品jvid在线观看| 久久久久久久久岛国免费| 黄色一级片在线观看| 亚洲欧美怡红院| 国卡一卡二卡三免费网站| 国产精品揄拍一区二区| 成人在线观看一区| 亚洲热av色在线播放| 91精品国产乱码久久久竹菊| 中国xxxx视频播放50| 国产日韩精品中文字无码| 欧美国产97人人爽人人喊| 亚洲国产激情一区二区三区| fc2ppv在线观看| 国产福利在线| 日本欧美一区| 波多野结衣视频一区| 欧美丝袜第一区| 欧美大胆视频| 国产精品久久久久久久久久久久久久久久| 精品视频资源站| 国产久草在线| 5566先锋影音夜色资源站在线观看| 亚洲人午夜精品| 欧美激情亚洲精品|