<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          5 分鐘,帶你快速入門(mén) Django DRF

          共 4404字,需瀏覽 9分鐘

           ·

          2021-03-30 12:32




          點(diǎn)擊上方“AirPython”,選擇“加為星標(biāo)

          第一時(shí)間關(guān)注 Python 原創(chuàng)干貨!


          1. 前言

          大家好,我是安果!

          DRF 框架,全稱為 Django Rest Framework,是 Django 內(nèi)置模塊的擴(kuò)展,用于創(chuàng)建標(biāo)準(zhǔn)化 RESTful API;它利用 ORM 映射數(shù)據(jù)庫(kù),并自定義序列化數(shù)據(jù)進(jìn)行返回,多用于前后端分離項(xiàng)目

          項(xiàng)目地址:

          https://github.com/encode/django-rest-framework

          本篇文章將帶大家 5 分鐘快速入門(mén) DRF

          2. 實(shí)現(xiàn)步驟

          詳細(xì)使用步驟如下( 10 步)

          2-1  創(chuàng)建虛擬環(huán)

          使用 mkvirtualenv 創(chuàng)建一個(gè)單獨(dú)的虛擬環(huán)境,指定 Python 版本為 3.7

          # 創(chuàng)建虛擬環(huán)境,名稱為:django3
          # 以 Python3.7 創(chuàng)建
          mkvirtualenv --python=python3.7 django3

          2-2  安裝依賴包

          接著,進(jìn)入虛擬環(huán)境,安裝依賴包「 djangorestframework

          # 進(jìn)入虛擬環(huán)境
          workon django3

          # 安裝依賴django
          pip3 install django

          # 安裝依賴djangorestframework
          pip3 install djangorestframework

          2-3  創(chuàng)建項(xiàng)目

          打開(kāi)目標(biāo)文件夾目錄,使用「 django-admin startproject 」命令創(chuàng)建一個(gè) Django 項(xiàng)目

          # 創(chuàng)建一個(gè)django項(xiàng)目
          # 項(xiàng)目名稱:drf_demo
          django-admin startproject drf_demo

          2-4  數(shù)據(jù)庫(kù)映射及超級(jí)用戶創(chuàng)建

          打開(kāi) Pycharm,在項(xiàng)目根目錄下,進(jìn)入虛擬環(huán)境,使用內(nèi)置的「 sqlite 」進(jìn)行數(shù)據(jù)庫(kù)映射,并創(chuàng)建一個(gè)超級(jí)用戶

          # 進(jìn)入虛擬環(huán)境
          workon django3

          # 數(shù)據(jù)庫(kù)映射(sqlite3)
          python3 manage.py migrate

          # 創(chuàng)建一個(gè)超級(jí)用戶,記住用戶名和密碼
          python3 manage.py createsuperuser

          2-5  添加應(yīng)用并配置 DRF 權(quán)限

          在項(xiàng)目配置文件 settings.py 中,添加應(yīng)用「 rest_framework 

          # settings.py

          # 添加應(yīng)用:rest_framework
          INSTALLED_APPS = [
              'django.contrib.admin',
              'django.contrib.auth',
              'django.contrib.contenttypes',
              'django.contrib.sessions',
              'django.contrib.messages',
              'django.contrib.staticfiles',
              'rest_framework',
          ]

          然后配置 REST_FRAMEWORK 權(quán)限

          # 配置DRF權(quán)限
          REST_FRAMEWORK = {
              'DEFAULT_PERMISSION_CLASSES': [
                  'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
              ]
          }

          2-6  自定義序列化類并關(guān)聯(lián)模型

          在項(xiàng)目目錄下的 urls.py 文件中,自定義一個(gè)類繼承于「 serializers.HyperlinkedModelSerializer 」

          利用內(nèi)部類「 Meta 」指定模型和要序列化的屬性

          # urls.py

          # 序列化

          from django.contrib import admin
          from django.contrib.auth.models import User
          from django.urls import path


          # 自定義序列化類
          from rest_framework import serializers


          class UserSerializer(serializers.HyperlinkedModelSerializer):
              class Meta:
                  model = User
                  fields = ['url''username''email''is_staff']

          PS:序列化用于定義 API 的表現(xiàn)

          2-7  定義視圖 ViewSets

          在 urls.py 文件中,定義一個(gè)視圖表現(xiàn)類,讓他繼承于「 viewsets.ModelViewSet 」類

          # urls.py

          from django.contrib.auth.models import User

          # 自定義定義視圖表現(xiàn)
          class UserViewSet(viewsets.ModelViewSet):
              # 查詢所有數(shù)據(jù)
              queryset = User.objects.all()

              # 指定序列化對(duì)應(yīng)的類
              serializer_class = UserSerializer

          其中

          • queryset

            指定數(shù)據(jù)源

          • serializer_class
            指定要序列化的類,即上面自定義的序列化類:UserSerializer

          2-8  注冊(cè)路由

          同樣在 urls.py 文件中,使用 DRF 的 DefaultRouter() 函數(shù)實(shí)例化一個(gè) router 對(duì)象

          然后,通過(guò) register() 函數(shù)將上面自定義的視圖 UserViewSet 注冊(cè)到路由中去

          # urls.py

          from rest_framework import serializers, viewsets, routers

          # 注冊(cè)路由
          router = routers.DefaultRouter()
          router.register(r'users', UserViewSet)

          2-9  定義 URL

          在 urls.py 文件中,在數(shù)組 urlpatterns 中定義 URL

          # urls.py

          from django.urls import path, include

          urlpatterns = [
              path('admin/', admin.site.urls),

              # 定義URL
              path('', include(router.urls)),
              path('api-auth/', include('rest_framework.urls'namespace='rest_framework')),
          ]

          2-10  API 管理及測(cè)試

          運(yùn)行項(xiàng)目,瀏覽器訪問(wèn)下面的地址

          http://127.0.0.1:8000/

          接著,點(diǎn)擊界面右上角的登錄,使用超級(jí)用戶進(jìn)行登錄后

          如此,就完成了一個(gè)簡(jiǎn)單 RESTful  API 的構(gòu)建

          3. 最后

          文中介紹了快速入門(mén) DRF 的基本流程,實(shí)際項(xiàng)目中,一般將序列化、視圖類單獨(dú)分離出來(lái)

          另外,序列化、視圖函數(shù)、API 可以根據(jù)父類去自由定制,這部分內(nèi)容下篇文章再進(jìn)行說(shuō)明

          我已經(jīng)將文中完整代碼上傳到后臺(tái),關(guān)注公眾號(hào)后回復(fù)關(guān)鍵字「 210330 」獲取

          如果你覺(jué)得文章還不錯(cuò),請(qǐng)大家 點(diǎn)贊、分享、留言 下,因?yàn)檫@將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強(qiáng)動(dòng)力!


          留言送書(shū)

          本周贈(zèng)書(shū):《Python最優(yōu)化算法實(shí)戰(zhàn)
          本書(shū)以理論結(jié)合編程開(kāi)發(fā)為原則,使用 Python 作為開(kāi)發(fā)語(yǔ)言,講解優(yōu)化算法的原理和應(yīng)用,詳細(xì)介紹了 Python 基礎(chǔ)、Gurobi 優(yōu)化器、線性規(guī)劃、整數(shù)規(guī)劃、多目標(biāo)優(yōu)化、動(dòng)態(tài)規(guī)劃、圖與網(wǎng)絡(luò)分析、智能優(yōu)化算法。對(duì)于算法部分的每一種算法都包含原理和編程實(shí)踐,使讀者對(duì)優(yōu)化算法的認(rèn)識(shí)更加深入



          PS:中獎(jiǎng)名單將在交流群公布,可以掃描上面二維碼,備注【交流群】,加入技術(shù)交流群!



          ??分享、點(diǎn)贊、在看,給個(gè)三連擊唄!
          瀏覽 69
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲AV无码成人精品区在线播放 | 亚洲三级片在线视频 | 370p日韩欧美亚洲精品 | 日韩丝袜足交视频网站 | 久草手机视频在线 |