Django:学习笔记(3)——REST实现

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接口已经完成。 

 

 

 

 

  

posted @ 2019-02-17 13:12  子烁爱学习  阅读(228)  评论(0编辑  收藏  举报