• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Django之DRF框架學習(Django REST framework)—— 初識DRF

    標簽: 后端  Python  django

    DRF(Django REST framework)

    DRF的特點

    • 提供了定義序列化器Serializer的方法,可以快速根據 Django ORM或者其他庫自動序列化/反序列化;
    • 提供了豐富的類視圖 Mixin擴展類 簡化視圖的編寫;
    • 豐富的定制層級: 函數視圖 類試圖 視圖集合到自動生成API, 滿足各種需要。
    • 多種身份認證和權限認證方式的支持
    • 內置限流系統;
    • 直觀的 API web 界面
    • 可擴展性

    Request

    REST framework 傳入視圖的request對象不再是Django默認的requset的對象,而是REST framework提供的擴展了HttpRequest類的Requset類的對象,

    REST framework 提供了Parser解析,在接收到請求后會自動根據Content-Type指明的請求數據(例如Json 表單等)將請求數據進行parse解析,解析為類字典對象保存到Request對象中。

    • 常用屬性
      • .date
        request.data 返回解析后的請求體數據,類似于Django中標準的request.POST或者 request.FILES 屬性提供如下屬性
      1. 包含了解析后的文件或者非文件數據
      2. 包含對POST PUT PATCH請求方式解析后的數據
      3. 利用了 REST framework的parsers解析器,不僅支持表單類型的數據,也支持JSON數據
      • query__params
        request.query_params 與 Django標準的requset.GET相同,只是更換了更正確的名稱而已

    體驗DRF

    • 在settings.py中注冊DRF
    INSTALLED_APPS = [
    	
    	...   
    
        #DRF應用
        'rest_framework'
    ]
    
    • 定義視圖
    from .models import BookInfo
    from django.http import JsonResponse,HttpResponse
    import json
    from rest_framework.viewsets import ModelViewSet
    from . import serializers
    
    class BookInfoView(ModelViewSet):
        '''定義類視圖'''
        # 指定查詢集
        queryset = BookInfo.objects.all()
    
        # 指定序列化器
        serializer_class = serializers.BookInfoSerializer
    
    • 定義路由
    from rest_framework.routers import DefaultRouter
    from . import views
    
    urlpatterns = [
        # # 列表視圖的路由
        # url(r'^books/$', views.BookListView.as_view()),
        # # 詳情視圖的路由
        # url(r'^books/(?P<pk>\d+)/$',views.BookDetailView.as_view()),
    ]
    
    router = DefaultRouter()  #創建路由器
    router.register(r'books', views.BookInfoView)  #注冊路由
    urlpatterns += router.urls #把生成好的路由拼接到urlpatterns
    
    • 序列化器 (在子應用中創建serializers.py文件)
    from rest_framework import serializers
    
    from .models import BookInfo
    
    class BookInfoSerializer(serializers.ModelSerializer):
        '''定義序列化器'''
        class Meta:
            model = BookInfo   #指定序列化從那個模型映射字段
            fields = '__all__'  #映射哪些字段
    

    謝謝觀看~
    在這里插入圖片描述

    版權聲明:本文為Seven597原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/Seven597/article/details/110231032

    智能推薦

    如何優化 Django REST Framework 的性能?(DRF Developer必看)

    現在,Django REST Framework 幫助 Django 開發者給自己的應用開發出簡單而強大的標準 REST APIs,而且現在我們已經成功的應用在了一些 Django Web 項目上。 然而,看似簡單直觀的 Django REST Framework 及其嵌套序列化可能會大大降低你的 API 端的性能。你的服務器的其他部分的響應能力也會被某一個低效的 R...

    Django之DRF框架學習(Django REST framework)——其他功能(認證、權限、限流、過濾、排序、分頁、異常處理、生成接口文檔)

    DRF之認證、權限、限流、過濾、排序、分頁、異常處理、生成接口文檔 認證 權限 限流Throttling 過濾Filtering 排序 認證 全局認證 在配置文件中配置全局默認的認證方案 局部認證 在每個視圖中通過設置authentication_classess屬性來設置 認證失敗的返回值 401 Unauthorized 未認證 403 Permission Denied 權限被禁止 權限 提...

    初步使用DRF(rest_framework)

    初步使用DRF−(RestFramework)初步使用DRF-(RestFramework)初步使用DRF−(RestFramework) ****:B站、網易云課堂、騰訊課堂 代碼地址:Gitee、Github 存儲地址: Google云 百度云:https://pan.baidu.com/s/180FqTm7pljbqLkEuLa_4LA 提取碼:cd5b 一 前期須知...

    Django之Rest Framework

    Rest Framework Rest Framework是前后端分離中的一種規范,它與框架本身無關,是一種軟件架構風格,全稱為Representational State Transfer。 Rest Framework最顯著的特點就是將一切數據看作資源,同時對不同的請求方式做出不同的責任劃分。這種結構理念也被稱為面向資源架構。 前后端分離 不同于前后端混合開發中的接口,API接口主要用于為頁面...

    django rest framework學習

    1. 引入DjangoRESTframework 1.1 Web應用模式 前后端不分離 前后端分離 1.2 認識RESTful 在前后端分離的應用模式里,API接口如何定義? 對于接口的請求方式與路徑,每個后端開發人員可能都有自己的定義方式,風格迥異。 是否存在一種統一的定義方式,被廣大開發人員接受認可的方式呢? 這就是被普遍采用的API的RESTful設計風格。 例如對于后端數據庫中保存了商品的...

    猜你喜歡

    Django REST Framework教程(1): 為什么要學習DRF, 什么是序列化和RESTful的API

    小編曾經承諾的Django REST Framework原創系列教程終于趕上了2020年那年夏天的尾巴,姍姍而來。我們將用不少于10篇的原創文章系統性地介紹如何使用這個框架開發符合RESTful規范的API,并詳細介紹API開發和管理中的核心知識比如關聯模型的序列化、分頁、過濾、認證、權限和限流。如果你已有一定Django基礎知識并希望在API開發和前后端分離開發技術上更近一步, 請歡迎關注我們的...

    如何使用Celery在DRF(Django rest framework)中提高服務器并發實現

    一、原理 首先圖片中的客戶端代表需要提高并發的服務器,Broker隊列通常保存任務,一般使用Redis/RabbitMQ實現,任務處理者便是Celery實例了 如圖:celery客戶端遇到耗時操作任務的時候,直接將任務發送到Broker(中間人)來協client(任務的發出者)和worker(任務的處理者)。需要注意的是,Celery在DRF中是以單獨的應用出現的,擁有自己的空間,一旦client...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    精品国产乱码久久久久久蜜桃不卡