python rest framework_Python:Django REST framework

在说Django REST framework之前我们先来了解一下web的两种开发模式:

1. 前后端不分离

2. 前后端分离

第一种开发模式是前端呈现的页面内容是由后端去控制的,后端渲染页面之后会把完整的页面返回给前端,前端和后端的耦合度比较高

第二种开发模式是后端仅仅只返回前端所需要的数据,至于怎么显示是前端去控制的,前端和后端的耦合度比较低,可以针对不同的客户端进行开发

RESTful风格

1. 为什么使用RESTful风格?

在进行API接口设计时,不同的开发人员可能有不同的设计风格,风格迥异。

那是否存在一种统一的接口设计方式,被广大开发人员所接受呢?

答: 这就是被普遍采用的RESTful API设计风格

2. 那么RESTful设计风格有哪些呢?

(1)url地址尽量去使用名词复数,不要使用动词

(2)请求方式:

执行不同的操作要用不同的请求方式:GET(获取)、POST(新增)、PUT(修改)、DELETE(删除)

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

(4)响应的数据格式是JSON

(5)响应状态码:200(获取或修改成功)、201(新增成功)、204(删除成功)、404(找不到资源)、500(服务器错误)

REST接口开发的核心任务

核心涉及到两个重要的概念:序列化与反序列化

1. 序列化:

将程序中的一个数据结构类型转换为其他格式(字典、JSON、XML等)

例如将Django中的模型类对象转换为字典或JSON字符串,这个转换过程我们称为序列化

2. 反序列化

将其他格式(字典、JSON、XML等)转换为程序中的数据

例如将JSON字符串或字典转换保存为Django中的模型类对象,这个过程我们称为反序列化

RestAPI核心工作:

将数据库数据序列化为前端所需要的格式,并返回

将前端发送的数据反序列化保存到模型类对象,并保存到数据库中

序列化器类定义

想要完成Django使用序列化器,基本的方式如下

定义模型类

定义序列化器类

demo:

#设置Django运行所依赖的环境变量

importosif not os.environ.get('DJANGO_SETTINGS_MODULE'):

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'BookProject.settings') # BookProject是自己的项目名称from rest_framework importserializersclassUser(object):"""用户类"""

def __init__(self, name, age):

self.name=name

self.age=ageclassUserSerializer(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 importBookInfoSerializer_v2

data= {'btitle': 'python', 'bpub_date': '2019-06-01'}

serializer= BookInfoSerializer_v2(data=data) #自定义反序列化器类

serializer.is_valid()#返回True

serializer.errors #{}

serializer.validated_data

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值