restful框架的使用
在使用django進(jìn)行前后臺分離開發(fā)時(shí)通常會搭配django-rest-framework
框架創(chuàng)建RESTful風(fēng)格的接口API??蚣芙榻B及版本要求可參考官方地址:https://www.django-rest-framework.org
![](/d/20211017/be3ac5a5eb917dcd0b8d0036f4d9ec15.gif)
本文以創(chuàng)建man
包含name
、sex
字段的API為實(shí)例學(xué)習(xí)django-rest-framework
框架的使用。
主要包含下面5個(gè)步驟:
1.創(chuàng)建Django項(xiàng)目
2.創(chuàng)建ORM模型
3.加載Django REST Framework
4.序列化模型
5.創(chuàng)建加載數(shù)據(jù)的view和url
1.創(chuàng)建Django項(xiàng)目
創(chuàng)建django_rest
django-admin startproject django_rest
進(jìn)入django_rest,創(chuàng)建虛擬環(huán)境env
激活虛擬環(huán)境,并安裝django
source ./env/bin/activate
安裝 django
創(chuàng)建rest_app
python manage.py startapp rest_app
注冊app,將app添加到INSTALLED_APPS
#setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_app'
]
創(chuàng)建后臺admin賬戶用于管理
$ python manage.py createsuperuser
Username (leave blank to use 'root'):admin
Email address:
Password:
Password (again):
Superuser created successfully.
2.創(chuàng)建ORM模型
數(shù)據(jù)庫我們使用默認(rèn)sqlite3 即可,如需要變更可在setting.py中databases配置。
修改我們/django_rest/models.py添加我們man
的模型
#models.py
from django.db import models
# Create your models here.
class Man(models.Model):
name = models.CharField(max_length=64)
sex = models.CharField(max_length=64)
def __str__(self):
return self.name
做數(shù)據(jù)庫遷移
python manage.py makemigrations
python manage.py migrate
![](/d/20211017/61ec4dc2478de79a648538a3fa1b9172.gif)
將Man這個(gè)model注冊到我們的后臺,以便可以通過django的后臺做增刪查改,編寫admin.py如下
#admin.py
from django.contrib import admin
from .models import Man
# Register your models here.
admin.site.register(Man) # 注冊Man到后臺
啟動django服務(wù)
python manage.py runserver
訪問 http://127.0.0.1:8000/admin/可以看到登錄界面,輸入密碼登錄
![](/d/20211017/0f0a8994d0255ce8a11dd28dd2cdd1f3.gif)
可以看到我們的rest_app下的模型man對象mans
![](/d/20211017/a595f3f009f0808398e9366888afd1b7.gif)
我們添加一個(gè)那個(gè)男人lgd.ame
![](/d/20211017/b9648792b16b9ee4c760afef6bf4db6f.gif)
3. 加載Django REST Framework
安裝工具包
pip install djangorestframework
注冊rest_framework
#setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_app'
'rest_framework' #注冊
]
4.序列化模型
序列化器會把我們的模型數(shù)據(jù)轉(zhuǎn)化(序列化)為json格式,這樣就能夠被請求了。同樣當(dāng)有josn數(shù)據(jù)提交過來的時(shí)候,序列化器會將json數(shù)據(jù)轉(zhuǎn)換為模型供咋們使用。
我們在rest_app下創(chuàng)建文件serializer.py
我們要做三件事:
1.導(dǎo)入Man模型
2.導(dǎo)入序REST Framework序列化器
3.創(chuàng)建新的類將模型和序列化器鏈接起來
from rest_framework import serializers
from .models import Man
class Manserializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Man
fields = ('name','sex')
5.創(chuàng)建加載數(shù)據(jù)的view和url
我們需要把序列化后的數(shù)據(jù)返回給瀏覽器,所以要做一下步驟:
1.通過不通的Man查詢數(shù)據(jù)庫
2.將查詢后的數(shù)據(jù)傳遞給序列化器,通過序列化器轉(zhuǎn)化為json
我們在rest_app/views.py編寫我們的視圖,ModelViewSet
由rest_framework提供,包含了get、post方法
# views.py
from rest_framework import viewsets
from .serializers import ManSerializer
from .models import Man
class ManViewSet(viewsets.ModelViewSet):
queryset = Man.objects.all().order_by('name') #查詢結(jié)果給queryset
serializer_class = ManSerializer #對結(jié)果進(jìn)序列化
在django_rest目錄下urls.py添加api路由
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('rest_app.urls')),
]
在rest_app目錄下創(chuàng)建urls.py添加視圖路由,通過rest_framework中router確保我們的請求到正確的動態(tài)資源。
from django.urls import include, path
from rest_framework import routers
from . import views
router = routers.DefaultRouter()
router.register(r'man', views.ManViewSet) #路由到ManViewSet視圖
# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
path('', include(router.urls)), #使用router路由
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
最后我們來啟動服務(wù),訪問http://127.0.0.1:8000/ 可以在瀏覽器查看到我們api信息
python manage.py runserver
![](/d/20211017/38931a085663a92df206c24644eef0bd.gif)
訪問http://127.0.0.1:8000/man/ 來查看man資源
![](/d/20211017/7ca8191453f97346d27bbd5b5be63d4c.gif)
通過id來訪問api資源http://127.0.0.1:8000/man/1/
![](/d/20211017/cca7fed07b88a903333fb2ab74fa0764.gif)
這樣我們一個(gè)基礎(chǔ)restful風(fēng)格的API創(chuàng)建完成了。感覺關(guān)鍵點(diǎn)還是理解ModelViewSet
和內(nèi)置router
不讀源碼很難知其所以然。
到此這篇關(guān)于Python django中如何使用restful框架的文章就介紹到這了,更多相關(guān)restful框架的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Python保姆式手把手帶你掌握異常的捕獲和處理
- python Django的顯示個(gè)人信息詳解
- python Django框架快速入門教程(后臺管理)
- Python Django搭建文件下載服務(wù)器的實(shí)現(xiàn)
- python中通過Django捕獲所有異常的處理