初撩Django-RESTful-rest_framework序列化(将模型序列化为JSON)
官方网站:
https://www.django-rest-framework.org/
翻译网站:
https://q1mi.github.io/Django-REST-framework-documentation/
RESTful 在Django框架中实现的插件:rest_framework
在Django框架中RESTful主要表现在序列化的实现、视图函数的实现和urls路由的实现,在这里我们可能会完全推翻Django基础知识中实现代码的方式。
1. 安装:
pip install djangorestframework
2. 在Django中的配置:
1. settings.py中INSTALLED_APPS添加['rest-framework',]
2.在应用中创建Serializers.py
3.Serializers中三个基础的序列化类:
- serializers.HyperLinkedModelSerializer:序列化模型,并添加超链接
- serializers.Serializer:手动添加序列化
- serializers.ModelSerializer:自动序列化,只需要把模型导入,属性many=True 表示可序列化多个模型
3.1 。serializers.HyperLinkedModelSerializer:
# models.py
from django.db import models class Books(models.Model):
b_name = models.CharField(max_length=30)
b_price = models.FloatField(default=1) def to_dict(self):
return {'id':self.id, 'b_name':self.b_name, 'b_price':self.b_price}
models.py
# urls.py
from django.urls import include, path
from rest_framework import routers from REST import views router = routers.DefaultRouter()
router.register(r'Books', views.BookViewSet) urlpatterns = [
path('', include(router.urls)),
]
urls.py
from django.shortcuts import render # Create your views here.
from rest_framework import viewsets from REST.models import Books
from REST.serializers import BookSerializer class BookViewSet(viewsets.ModelViewSet):
queryset = Books.objects.all()
serializer_class = BookSerializer
views.py
# serializers.py
from rest_framework import serializers from REST.models import Books class BookSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Books
fields = ('url', 'b_name','b_price')
serializers.py
models.py : 建立模型
urls.py :建立路由
views.py :建立序列化类视图
serializers.py :序列化
3.2 。serializers.Serializer
class Person(models.Model):
p_name = models.CharField(max_length=32)
p_age = models.IntegerField(default=1)
p_sex = models.BooleanField(default=False) class Meta:
db_table = 'Person'
models.py
from django.urls import path
from REST import views urlpatterns = [
path('person', views.PersonView.as_view()),
]
urls.py
class PersonView(View):
def post(self,request):
p_name = request.POST.get('p_name')
p_age = request.POST.get('p_age')
print('*********',p_name) person = Person()
person.p_name = p_name
person.p_age = p_age
print('***##***', p_name)
person.save() person_serializer = PersonSerializer(person)
return JsonResponse(person_serializer.data)
views.py
class PersonSerializer(serializers.Serializer):
# 和模型中的字段对应
id = serializers.IntegerField(read_only=True) # 表示只读
p_name = serializers.CharField(max_length=32)
p_age = serializers.IntegerField(default=1)
p_sex = serializers.BooleanField(default=False) # 进行对象的创建
def create(self,validated_data):
return Person.objects.create(**validated_data) # 对象的更新
def update(self, instance, validated_data):
# 分别拿到对象,并对对象进行更新
instance.p_name = validated_data.get('p_name',instance.p_name)
print('@@@@@@')
instance.p_age = validated_data.get('p_age', instance.p_age)
instance.p_sex = validated_data.get('p_sex', instance.p_sex)
instance.save() return instance
serializers.py
3.3 。serializers.ModelSerializer
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Students
fields = ('s_name', 's_age')
serializers.py
(省略了models.py,urls.py,views.py,和serializers.Serializer类似)ModelSerializer简单,常用!!!
初撩Django-RESTful-rest_framework序列化(将模型序列化为JSON)的更多相关文章
- @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化
@JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化 https://www.cnblogs.com/sup ...
- 【Django】rest_framework 序列化自定义替换返回值
# 序列化设置 class PagerSerialiser(serializers.ModelSerializer): name = serializers.CharField(source=&quo ...
- django restful framework 一对多方向更新数据库
目录 django restful framework 序列化 一 . 数据模型: models 二. 序列化: serializers 三, 视图: views 四, 路由: urls 五. 测试 ...
- 在django restful framework中设置django model的property
众所周知,在django的model中,可以某些字段设置@property和setter deleter getter,这样就可以在存入数据的时候进行一些操作,具体原理请参见廖雪峰大神的博客https ...
- django 3.1 序列化讲述
序列化Django对象¶ Django的序列化框架提供了一种将Django模型"翻译"为其他格式的机制.通常,这些其他格式将基于文本,并用于通过电线发送Django数据,但是序列化 ...
- python 序列化及其相关模块(json,pickle,shelve,xml)详解
什么是序列化对象? 我们把对象(变量)从内存中编程可存储或传输的过程称之为序列化,在python中称为pickle,其他语言称之为serialization ,marshalling ,flatter ...
- Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Py ...
- python序列化及其相关模块(json,pickle,shelve,xml)详解
什么是序列化对象? 我们把对象(变量)从内存中编程可存储或传输的过程称之为序列化,在python中称为pickle,其他语言称之为serialization ,marshalling ,flatter ...
- 超高性能的json序列化之MVC中使用Json.Net
先不废话,直接上代码 Asp.net MVC自带Json序列化 /// <summary> /// 加载组件列表 /// </summary> /// <param na ...
随机推荐
- Ansible--02 ansible playbook的应用
目录 Ansible playbook的应用 什么是playbook playbook的组成 playbook和Ad-Hoc对比 YAML语法 安装httpd练习 rsyncd实战 实战1: 实战2: ...
- LNMP环境安装
一.LNMP 1.使用LNMP的优点: 资源占用少 更多并发 代理服务器 热启动 稳定高效 负载均衡 邮件服务器 2.安装前准备: 2.1查看防火墙(默认开启): [root@localhost ~] ...
- 2019HDU多校第一场 String 贪心
题意:给你一个字符串,问是否存在一个长度为m的子序列,子序列中对应字符的数目必须在一个范围内,问是否存在这样的字符串?如果存在,输出字典序最小的那个. 思路:贪心,先构造一个序列自动机,序列自动机指向 ...
- kvm学习笔记(一,基础概念)
前言 阿里云的云主机,采用的kvm,今天就花了点时间研究了下. 一.安装 官方文档参考:http://www.linux-kvm.org/page/HOWTO 二.快速建立一个基于vnc的虚拟机安装 ...
- 22.ReadWriteLock读写锁
import java.util.Random; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.R ...
- 测试demo 配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- 每天一个linux命令:file(11)
file file命令用来探测给定文件的类型.file命令对文件的检查分为文件系统.魔法幻数检查和语言检查3个过程. 格式 file [选项] [参数] 参数选项 参数 备注 -b 列出辨识结果时,不 ...
- 调用windows的复制文件对话框
function CopyFileDir(sDirName: String; sToDirName: String): Boolean; var fo: TSHFILEOPSTRUCT; begin ...
- 解决ios下部分手机在input设置为readonly属性时,依然显示光标
解决ios下部分手机在input设置为readonly属性时,依然显示光标 在出现如上所说的问题是尝试给input 加上 onfocus="this.blur()" 方法 添加 ...
- 人物-IT-胡玮炜:百科
ylbtech-人物-IT-胡玮炜:百科 胡玮炜,女,汉族,1982年出生于浙江东阳,毕业于浙江大学城市学院新闻系,摩拜单车创始人 . 2004年胡玮炜从浙江大学城市学院新闻系毕业后进入<每日经 ...