Django Rest Framework (DRF) 是一個(gè)用于構(gòu)建 RESTful API 的強(qiáng)大框架,。在這篇教程中,,我們將探討如何使用DRF來構(gòu)建一個(gè)簡(jiǎn)單的API,。 1.安裝RestFramework1.首先,,確保你已經(jīng)安裝了Django和DRF,。你可以使用以下命令進(jìn)行安裝: pip install django pip install djangorestframework 安裝好后,,我們創(chuàng)建一個(gè)bbs應(yīng)用,。
2.序列化模型序列化器允許把像查詢集和模型實(shí)例這樣的復(fù)雜數(shù)據(jù)轉(zhuǎn)換為可以輕松渲染成JSON,XML或其他內(nèi)容類型的原生Python類型,。序列化器還提供反序列化,,在驗(yàn)證傳入的數(shù)據(jù)之后允許解析數(shù)據(jù)轉(zhuǎn)換回復(fù)雜類型。
在bbs目錄下,,打開models.py文件,并定義一個(gè)簡(jiǎn)單的模型,,例如: from django.db import models from django.utils import timezone
# Create your models here. class Post(models.Model): title = models.CharField(max_length=200, verbose_name='標(biāo)題') content = models.TextField(verbose_name='內(nèi)容') pub_date = models.DateTimeField(auto_now_add=True, verbose_name='發(fā)布日期')
# 模型數(shù)據(jù)驗(yàn)證 def pub_date_valid(self): return self.pub_date < timezone.now()
另外,,我們?cè)?bbs 目錄下,再創(chuàng)建一個(gè)新的文件
這里我們定義了一個(gè) class PostSerializer(serializers.Serializer): title = serializers.CharField(max_length=200) content = serializers.CharField() pub_date = serializers.DateTimeField() 3.基于函數(shù)的視圖
url.py配置如下: from .views import hello_world, get_post_hello_world
urlpatterns = [ path('/hello', hello_world), path('/get_post_hello', get_post_hello_world) ] 4.ModelViewSet視圖類在 bbs 目錄下,,打開views.py文件,,并添加以下代碼:
這里我們創(chuàng)建了一個(gè) from django.urls import include, path from .views import PostViewSet from rest_framework import routers
router = routers.SimpleRouter() router.register(r'posts', PostViewSet)
urlpatterns = [ path('/', include(router.urls)), ] 這里我們注冊(cè)了 不要灰心,,我們檢查一下
再次訪問上述鏈接地址,,非常 Wonderful,! 5.總結(jié)及擴(kuò)展使用:本文中涉及的主要知識(shí)點(diǎn)包括,序列化serialize,, 資源路由routers, 基于函數(shù)的視圖api_view,以及基于viewset的ModelViewSet,。 routers是一種用于自動(dòng)化URL路由的工具。它提供了一種簡(jiǎn)化和標(biāo)準(zhǔn)化URL配置的方式,,使開發(fā)人員可以輕松地定義API端點(diǎn),,并將它們映射到相應(yīng)的視圖函數(shù)或視圖集上。如上述例子中的ModelViewSet正是利用了routers的這一特性,。 ModelViewSet則是繼承自ViewSet,,通過繼承DRF的ViewSet類或其中的一個(gè)子類,我們可以來定義自己的視圖類,。ViewSet類提供了一系列的標(biāo)準(zhǔn)操作方法,,如 ViewSet類的主要特點(diǎn)如下: ·1,、自動(dòng)映射URL: ViewSet類自動(dòng)將方法映射到URL路徑,,并將其與視圖函數(shù)進(jìn)行關(guān)聯(lián)。例如,,list方法會(huì)自動(dòng)映射到 需要注意的是,ViewSet類并不是強(qiáng)制的,,仍然可以使用自定義的視圖函數(shù)來處理API請(qǐng)求,。但使用ViewSet類可以提高代碼的可讀性和可維護(hù)性,并在很大程度上減少了代碼的重復(fù)性,。 以上就是本文的全部?jī)?nèi)容,,代碼可在我的github[1]上找到。 References
|
|