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

本文详细介绍如何使用Django框架结合RESTful风格实现API接口,包括安装配置Django Rest Framework,定义资源及序列化,以及如何通过重写HTTP方法实现CRUD操作。

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

 

 

 

 

  

转载于:https://www.cnblogs.com/MrSaver/p/10390806.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值