99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時代5分鐘,帶你快速入門 Django DRF
5分鐘,帶你快速入門 Django DRF
2021-03-30
收藏

來源:AirPython

作者:星安果

5分鐘,帶你快速入門 Django DRF

1. 前言

大家好,我是安果!

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

本篇文章將帶大家 5 分鐘快速入門 DRF

2. 實現(xiàn)步驟

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

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

使用 mkvirtualenv 創(chuàng)建一個單獨的虛擬環(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)建項目

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

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

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

5分鐘,帶你快速入門 Django DRF

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

# 進(jìn)入虛擬環(huán)境
workon django3
# 數(shù)據(jù)庫映射(sqlite3)
python3 manage.py migrate
# 創(chuàng)建一個超級用戶,記住用戶名和密碼
python3 manage.py createsuperuser

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

在項目配置文件 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)模型

在項目目錄下的 urls.py 文件中,自定義一個類繼承于「
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 文件中,定義一個視圖表現(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()
# 指定序列化對應(yīng)的類
serializer_class = UserSerializer

其中

queryset指定數(shù)據(jù)源serializer_class指定要序列化的類,即上面自定義的序列化類:UserSerializer

2-8.注冊路由

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

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

# urls.py
from rest_framework import serializers, viewsets, routers
# 注冊路由
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 管理及測試

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

5分鐘,帶你快速入門 Django DRF

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

3. 最后

文中介紹了快速入門 DRF 的基本流程,實際項目中,一般將序列化、視圖類單獨分離出來。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }