Django REST framework

web 开发有两种开发模式:

1、前后端不分离

  前端看到的效果都是由后端控制的,后端渲染页面之后给前端返回完整的页面,前端与后端的耦合度很高。

2、前后端分离

  后端仅返回前端所需要的数据,至于数据怎么进行展示,由前端自己进行控制,前端与后端的耦合度很低。

 

在开发中有个细节要提一下考虑到 不同的人有不同的设计风格,

就像钱一样,对它的评价 “褒贬不一” ,归根结底 ,源头还是在人。

所以普遍采用的RESTful API设计风格。

 

Restful 风格设计关键点

1、URL地址尽量使用名词复数,不要使用动词。

2、常见的请求方式:

  GET(获取数据),POST:(新增数据),PUT(修改),DELETE(删除)

3、过滤参数放在查询字符串中

4、响应的数据格式是JSON

5、响应状态码:

  200(获取或修改成功),201(新增成功),204(用户删除数据成功),400(找不到资源),500(服务器错误)

 

REST接口开发的核心任务

开发REST API接口 视图主要 做了:

1 .将请求数据(如JSON格式)转换为模型类对象 2.操作数据库 3.将模型类对象转为响应的数据(如JSON格式)

从这三部分操作,涉及到了两个重要的概念:序列化和反序列化

1.序列化:将对象(模型类对象)转换为字典或者JSON的过程,并返回

2.反序列化:将字典或JSON转换保存到对象(模型类对象)的过程,并保存到数据库

 

序列化器操作

想要完成Django使用序列化器,步骤如下

1.定义模型类

2.定义序列化器类

demo:

复制代码
# 设置Django运行所依赖的环境变量
import os

if not os.environ.get('DJANGO_SETTINGS_MODULE'):
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'BookProject.settings')  # BookProject是自己的项目名称

from rest_framework import serializers


class User(object):
    """用户类"""

    def __init__(self, name, age):
        self.name = name
        self.age = age


class UserSerializer(serializers.Serializer):
    """用户序列化器类"""
    name = serializers.CharField()
    age = serializers.IntegerField()


# 创建User对象
user = User(name='smart', age=18)

# 使用UserSerializer将user对象序列化为如下字段数据:{'name': 'smart', 'age': 18}
serializer = UserSerializer(user)

# 获取序列化之后的数据
print(serializer.data)
复制代码
 

反序列化操作

demo:

复制代码
from booktest.serializers import BookInfoSerializer_v2

data = {'btitle': 'python', 'bpub_date': '2019-06-01'}
serializer = BookInfoSerializer_v2(data=data) #自定义反序列化器类
serializer.is_valid()  # 返回True
serializer.errors  # {}
serializer.validated_data  
复制代码

 

 
 

 

posted @ 2020-08-20 08:34  .未央  阅读(154)  评论(0编辑  收藏  举报