Django:学习笔记(3)——REST实现
了解REST风格
按照传统的开发方式,我们在实现CURD操作时,会写多个映射路径,比如对一本书的操作,我们会写多个URL,可能如下
web/deleteBookById web/updateBookById web/addBook web/getBookById ....
但是由于很难形成统一的URL命名规范,导致了URL命名的混乱。REST是面向资源的,URL的设计只需要将资源通过合理方式暴露出来即可。比如:
web/book web/dog ....
资源暴露出来了,如何实现传统开发方式的CURD呢?在REST设计规范中,只需将请求方法(GET:查询、POST:新增、PUT:修改、DELETE:删除)进行相对应的设置即可。
GET web/getDogs --> GET web/dogs 获取所有小狗狗 GET web/addDogs --> POST web/dogs 添加一个小狗狗 GET web/editDogs/:dog_id --> PUT web/dogs/:dog_id 修改一个小狗狗 GET web/deleteDogs/:dog_id --> DELETE web/dogs/:dog_id 删除一个小狗
Django Rest实现
安装配置django rest framework
执行pip命令安装REST框架
pip install djangorestframework
安装完成后,在项目源目录的setting.py中进行配置
定义资源,实现序列化
应用目录下models.py
# 定义一个用户信息 class User(models.Model): username = models.CharField(max_length=16) password = models.CharField(max_length=16) gender = models.CharField(max_length=2) mail = models.EmailField()
应用目录下serializers.py
from .models import User from rest_framework import serializers class UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = User fields = ('id','username','password')
继承View,重写HTTP METHOD
应用目录下views.py
from myweb.models import User from .serializers import UserSerializer from rest_framework.viewsets import ModelViewSet class UserModelSet(ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer
配置URL
项目源目录urls.py
from django.urls import path,include from rest_framework import routers from myweb.views import UserModelSet routers = routers.DefaultRouter() routers.register('user',UserModelSet) urlpatterns = [ path('api/',include(routers.urls)), ]
配置到此,一个基本的API接口已经完成。