zoukankan      html  css  js  c++  java
  • 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接口已经完成。 

      

  • 相关阅读:
    对字符串进行编码解码
    C#重新启动时,关闭较早的进程
    JS给HTML5页面<Select></Select>绑定选中项
    获取该项目路径下的文件路径
    IE浏览器从页面向后台Controller传中文值出现乱码问题
    委托
    win10激活命令
    判断窗口是否已经被打开
    JS之对象数组遍历?
    JS之arguments属性解读函数传参?
  • 原文地址:https://www.cnblogs.com/MrSaver/p/10390806.html
Copyright © 2011-2022 走看看