成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

宿舍得

lx1036 / 615人閱讀

摘要:序列化輸出定義序列化器字段的作用補(bǔ)充為列表,關(guān)系屬性字段的三種方式獲取序列化后的數(shù)據(jù),,反序列化輸入驗(yàn)證驗(yàn)證的調(diào)用接收數(shù)據(jù)繼承獲取查詢(xún)字符串中的某個(gè)參數(shù)值獲取查詢(xún)字符串中的所有值返回一個(gè)字典獲取請(qǐng)求體中的參數(shù)包括表單創(chuàng)建序列化器對(duì)象類(lèi)字典進(jìn)

1.序列化輸出:

1.定義序列化器字段的作用
    1.
    2.
    補(bǔ)充:read_only,write_only

2.`JsonResponse({book_dict})`

JsonResponse({"bookinfo":book_dict_list}) # book_dict_list 為列表

  JsonResponse(book_dict_list,safe = False)

3.關(guān)系屬性字段的三種方式
    1.hbook = PrimaryKeyRelatedField(read_only = True)
    2.hbook = StringRealtedField(read_only=True)
    3.hbook = bookinfoSerializer(read_only = True)
    4.heroinfo_set = PrimaryKeyRelatedField(read_only = True,many = True)
    5.heroinfo_set = StringRealtedField(read_only=True,many = True)
    6.heroinfo_set = bookinfoSerializer(read_only = True,many = True)

4.獲取序列化后的數(shù)據(jù):serializer.data ========> {}  or  [{},{},{}]

2.反序列化輸入:

1.驗(yàn)證

2.驗(yàn)證的調(diào)用
    1.接收數(shù)據(jù)(繼承APIView)
        next = request.query_params.get("next") :獲取查詢(xún)字符串中的某個(gè)參數(shù)值
        data_dict = request.query_params.dict():獲取查詢(xún)字符串中的所有值,返回一個(gè)字典
        data=request.data:獲取請(qǐng)求體中的參數(shù)(包括表單,json)

    2.創(chuàng)建序列化器對(duì)象serializer = 類(lèi)(data = 字典)
    3.serializer.is_valid()=======>進(jìn)行驗(yàn)證===>True/False
        return JsonResponse(serializer.errors)
    4.serializer.errors===========>字典,異常信息(定義序列化器里面自定義的異常信息)
    serializer.validated_data
3.保存

4.保存的調(diào)用
    1.serializer=序列化器類(lèi)型(data=***)===>默認(rèn)選擇create()方法
    2.serializer=序列化器類(lèi)型(模型類(lèi)對(duì)象,data=***,[partial = True])====>默認(rèn)選擇update()方法
    3.book = serializer.save() # 返回一個(gè)對(duì)象

5.序列化輸出

3.APIView=============================================>繼承自View

1.由來(lái) : 發(fā)現(xiàn)View中每個(gè)方法里面都需要使用json轉(zhuǎn)換,可以進(jìn)一步封裝

2.里面的方法
    get
    post
    put
    patch
    delete
3.response和resquest
    1.request.query_params.get()=======>獲取查詢(xún)字符串中的值,類(lèi)型為字典
      request.data.get()======>獲取請(qǐng)求報(bào)文體中的數(shù)據(jù),類(lèi)型為字典
    2.Response()   {} or [{},{},{},{}]  不需要safe = False

4.繼承自View
    1.使用Resquest
    2.使用Response
    3.更好的異常處理
    4.在dispatch()前,進(jìn)行了身份認(rèn)證,權(quán)限判斷,流量控制

3306 6379

4.GenericAPIView=================================>繼承自APIView

1.由來(lái): 發(fā)現(xiàn)繼承自View的APIView,雖然已經(jīng)減少了很多代碼的重復(fù),但是發(fā)現(xiàn)每個(gè)方法中只有
       查詢(xún)的模型類(lèi)對(duì)象,和要操作的序列化器名不一樣,可以進(jìn)一步封裝

2.GenericAPIView+5個(gè)ModelMixin
    from rest_framework.mixin import *
    from rest_framework.generics import GenericAPIView
    查詢(xún)多個(gè)(get)-------------------------------->list------>ListModelMixin
    創(chuàng)建(post)----------------------------------->create---->CreateModelMixin


    查詢(xún)一個(gè)(接收主鍵)(get)---------------------->retrieve-->RetrieveModelMixin
    修改(接收主鍵)(put)-------------------------->update---->UpdateModelMixin
    刪除(接收主鍵)(delete)----------------------->destory--->DestoryModelMixin

3.新添加的屬性和方法
    1.屬性:
        queryset
        serializer_class
        lookup_fileds------>默認(rèn)為pk,因?yàn)橛械姆椒ń邮罩麈I的參數(shù)為pk(來(lái)自?P)

    2.方法:
        1.get_queryset()----->獲取屬性queryset的值,可重寫(xiě)
               重寫(xiě)場(chǎng)景 ----->比如說(shuō):需要修改"當(dāng)前用戶(hù)"的收貨地址--->根據(jù)用戶(hù)查詢(xún)收貨地址
               原因分析 ----->1.類(lèi)創(chuàng)建的時(shí)候沒(méi)有request對(duì)象--->2.執(zhí)行g(shù)et中的list()方法才會(huì)有request

        2.get_serializer_class()--->獲取屬性serializer_class的值,可重寫(xiě)
               重寫(xiě)場(chǎng)景 ----->不同情境選擇不同的序列化器

        3.get_serializer()-------------->獲取序列化器的對(duì)象------------>基本用不著
        4.get_object()------------------>獲取根據(jù)pk查詢(xún)到的對(duì)象-------->基本用不著


4.使用方法
    class HerosView(ListModelMixin,CreateModelMixin,GenericAPIView):
        # 自己指定查詢(xún)語(yǔ)句
        queryset  =HeroInfo.object.all()
        # 自己指定序列化器
        serializer_class = HerInfoModelSerializer

        def get(self,request):
            # 查詢(xún)所有:自己指定查詢(xún)語(yǔ)句+序列化器
            return self.list(request)

        def post(self,request):
            # 創(chuàng)建一個(gè):自己指定序列化器
            return self.create(request)

5.組合繼承:========================>對(duì)GenericAPIView+5個(gè)ModelMixin的進(jìn)一步封裝,不需要寫(xiě)get,post,put,delete方法了

1.由來(lái): 發(fā)現(xiàn)GenericAPIView+ModelMixin的每個(gè)方法里面都是返回對(duì)應(yīng)的操作,如 return self.list(request)
                                                                         return self.create(request),可以進(jìn)一步封裝

HerosView
    list------------->ListAPIView----------------->繼承自ListModelMixin+GenericAPIView
    create----------->CreateAPIView--------------->繼承自CreateModelMixin+GenericAPIView
    list+create------>ListCreateAPIView----------->同理

HerosView
    retrieve--------->RetrieveAPIView
    update----------->UpdateAPIView
    destory---------->同理

    retrieve+update--------------->同理
    retrieve+destory-------------->同理
    # update+destory-------------->無(wú)
    retrieve+update+destory------->同理

6.視圖集

1.由來(lái): 發(fā)現(xiàn)組合繼承(ListAPIView,ListCreateAPIView)中除了HerosView和HeroView不同以外,其他的都一樣,可以進(jìn)一步封裝

2.合并的問(wèn)題:在同一個(gè)了類(lèi)中,不允許有同名的方法

3.解決問(wèn)題:改方法的名稱(chēng)

4.新問(wèn)題:如果改了名稱(chēng),則dispatch()無(wú)法根據(jù)請(qǐng)求方法獲取方法

5.新的解決問(wèn)題: {"get":"list"},可自定義方法名了

6.字典的傳入方法:views.HeroInfoViewSet.as_view({"get":"list"})

7.會(huì)多出一個(gè)action屬性: if self.action == "list"
----------------------------------------------------------------------------
8.drf中默認(rèn)的設(shè)置好的方法
    list     create 
    get      update     destory

9.drf提供的視圖集-->4個(gè)

7.總結(jié):

1.一步步封裝:
    APIView: 發(fā)現(xiàn)View中每個(gè)方法里面都需要使用json轉(zhuǎn)換,可以進(jìn)一步封裝發(fā)現(xiàn)View中每個(gè)方法里面都需要使用json轉(zhuǎn)換,可以進(jìn)一步封裝
    GenericAPIView+5個(gè)ModelMixin: 發(fā)現(xiàn)繼承自View的APIView,雖然已經(jīng)減少了很多代碼的重復(fù),但是發(fā)現(xiàn)每個(gè)方法中只有
       查詢(xún)的模型類(lèi)對(duì)象,和要操作的序列化器名不一樣,可以進(jìn)一步封裝
    組合繼承: 發(fā)現(xiàn)GenericAPIView+ModelMixin的每個(gè)方法里面都是返回對(duì)應(yīng)的操作,如 return self.list(request)
                                                                         return self.create(request),可以進(jìn)一步封裝
    視圖集: 發(fā)現(xiàn)組合繼承(ListAPIView,ListCreateAPIView)中除了HerosView和HeroView不同以外,其他的都一樣,可以進(jìn)一步封裝


2.繼承關(guān)系(---->)如下:
                                                         ---->ListAPIView---->ListModelMixin+GenericAPIView
                                                         |
                                                         |--->CreateAPIView-->CreateModelMixin+GenericAPIView
    View----->APIView-----> GenericAPIView+5個(gè)ModelMixin |
                                                         |..........
                                                         |
                                                         |
                                                         ---->一共9個(gè)

3.是視圖的選擇:
    APIView==========================>自己實(shí)現(xiàn),不涉及模型類(lèi)的操作
    GenericAPIView+5個(gè)ModelMixin:====>增刪改查 部分操作

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42776.html

相關(guān)文章

  • 基于SSM的學(xué)生宿舍管理系統(tǒng)

    摘要:項(xiàng)目介紹本系統(tǒng)采用框架,數(shù)據(jù)層采用,數(shù)據(jù)庫(kù)使用,可以用作畢業(yè)設(shè)計(jì)課程設(shè)計(jì)等,適合選題高校宿舍宿舍員工宿舍等,下面是大概的功能,具體功能實(shí)現(xiàn)可以建議看下方的演示視頻,系統(tǒng)適合于基礎(chǔ)一般的同學(xué)使用。 項(xiàng)目介紹: 本系統(tǒng)采用SSM框架,數(shù)據(jù)層采用mybatis,數(shù)據(jù)庫(kù)使用mysql,可以用作畢業(yè)設(shè)...

    Backache 評(píng)論0 收藏0
  • 學(xué)生宿舍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    摘要:項(xiàng)目編號(hào)基于實(shí)現(xiàn)學(xué)校宿舍管理系統(tǒng)主要包含學(xué)生管理宿舍管理班級(jí)管理宿舍衛(wèi)生管理訪客管理收費(fèi)管理管理員管理等功能。 項(xiàng)目編號(hào):BS-GX-010 基于SSM實(shí)現(xiàn)學(xué)校宿舍管理系統(tǒng):主要包含學(xué)生管理、宿舍管理、班級(jí)管理、宿舍衛(wèi)生管理、訪客管理、收費(fèi)管理、管理員管理等功能。并能導(dǎo)出各模塊數(shù)據(jù)到EXC...

    Riddler 評(píng)論0 收藏0
  • 基于javaweb+jsp的學(xué)生宿舍管理系統(tǒng)

    摘要:基于的學(xué)生宿舍管理系統(tǒng)部分代碼實(shí)現(xiàn)樓棟不能為空編輯表單提交之前進(jìn)行檢查,如果,則不允許提交根據(jù)獲取值姓名不能為空電話不能為空側(cè)邊欄 基于javaweb+jsp的學(xué)生...

    DandJ 評(píng)論0 收藏0
  • 物聯(lián)網(wǎng)應(yīng)用技術(shù)課程設(shè)計(jì)————宿舍升降機(jī)模型

    摘要:綜合諸多考慮與相應(yīng)調(diào)研,我們希望能夠制作出一款宿舍升降機(jī)為同學(xué)們提供更方便安全的上下床方式。摘要本設(shè)計(jì)采用開(kāi)發(fā)板作為主控,結(jié)合壓力傳感器紅外避障傳感器電機(jī)驅(qū)動(dòng)模塊實(shí)現(xiàn)了一個(gè)可以自動(dòng)升降自動(dòng)停止自動(dòng)調(diào)速的宿舍升降機(jī)模型系統(tǒng)。 (第一次寫(xiě)博客,記錄下自己大一時(shí)做的一個(gè)課設(shè),如有不妥之處,還望多...

    Caicloud 評(píng)論0 收藏0
  • JAVA實(shí)戰(zhàn)項(xiàng)目之 學(xué)生宿舍管理系統(tǒng)

    摘要:學(xué)生宿舍管理系統(tǒng)該項(xiàng)目采用技術(shù),開(kāi)發(fā)工具,項(xiàng)目含有源碼配套開(kāi)發(fā)軟件軟件安裝教程項(xiàng)目發(fā)布教程功能介紹房間管理主要實(shí)現(xiàn)對(duì)房間信息的刪除修改相關(guān)操作學(xué)生信息管理主要實(shí)現(xiàn)對(duì)學(xué)生信息的增加刪除查詢(xún)修改等相關(guān)操作住宿管理主要實(shí)現(xiàn)對(duì)宿舍的增加刪除查詢(xún)修 《學(xué)生宿舍管理系統(tǒng)》該項(xiàng)目采用技術(shù)swing,開(kāi)發(fā)工...

    MiracleWong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<