数据校验

Django组件总结

心不动则不痛 提交于 2019-12-05 11:28:51
Django组件介绍 分页器的使用 分页器在页面中非常常见,当数据库条数数据过多时,页面一次性显示不好看时,我们可以使用分页器,将数据分几次显示。 1.1 数据库内插入大量数据 Booklist=[] for i in range(100): Booklist.append(Book(title="book"+str(i),price=30+i*i)) Book.objects.bulk_create(Booklist) 使用对象下面的 bulk_create() ,可以实现批量插入 1.2 导入模块 from django.core.paginator import Paginator 1.3 实例化一个分页器 paginator = Paginator(book_list,8) 第一个为数据列表,第二个为每一页数据 1.4 分页器对象相关的方法 方法 作用 paginator.count() 数据总数 paginator.num_pages() 总页数 paginator.page_range() 页码的迭代器 获取第n页数据 current_page = paginator.page(1) 获取第一页的列表 方法 作用 current_page.object_list 获取第n页对象列表 current_page.has_next() 是否有下一页 current_page

drf框架 - 序列化组件

别来无恙 提交于 2019-12-05 07:37:26
drf框架 - 序列化组件 序列化与反序列化 序列化: 将对象序列化成字符串用户传输 反序列化: 将字符串反序列化成对象用于使用 drf的序列化与反序列化 序列化: 将Model类对象序列化成字符串用户传输 反序列化: 将字符串反序列化成Model对象用于使用 Serializer 序列化准备: 模型层: models.py class User(models.Model): SEX_CHOICES = [ [0, '男'], [1, '女'], ] name = models.CharField(max_length=64) pwd = models.CharField(max_length=32) phone = models.CharField(max_length=11, null=True, default=None) sex = models.IntegerField(choices=SEX_CHOICES, default=0) icon = models.ImageField(upload_to='icon', default='icon/default.jpg') ​ class Meta: # 自定义创建的表名 db_table = 'user' # admin界面中显示的表面与表名复数形式 verbose_name = '用户' verbose_name

Serializer组件(序列化器-Serializer)

半世苍凉 提交于 2019-12-05 07:19:21
目录 Serializer组件(序列化器-Serializer) 2.ModelSerializer Serializer组件(序列化器-Serializer) 1.定义序列化器 Django REST framework中的Serializer使用类来定义, 需要继承自rest_framework.serializers.Serializer. 1.# 先定义数据库模型类User from django.db import models class User(models.Model): CHOICES_SEX = ((0, '男'), (1, '女')) name = models.CharField(max_length=64) age = models.IntegerField(default=0) height = models.DecimalField(max_digits=5, decimal_places=2, default=0) icon = models.ImageField(upload_to='icon', default='default.png') sex = models.IntegerField(choices=CHOICES_SEX, default=0) # 已经迁移的数据库,新增字段需要允许为空或者设置默认值 pwd = models

drf序列化及反序列化

*爱你&永不变心* 提交于 2019-12-05 05:16:10
假如把drf看做一个汉堡包,我们之前讲的模块属于汉堡包前面的盖盖(请求模块、渲染模块)和底底(异常模块、解析模块、响应模块),但是真正中间的夹心没有讲,那么今天我就和大家来看一下汉堡包的夹心(序列化及反序列化)到底是什么东西。 drf序列化(Serializer) 什么是drf序列化?序列化就是 将Model对象序列化成字符串用户传输 序列化使用 数据准备 models.py class User(models.Model): SEX_CHOICES = [ [0, '男'], [1, '女'], ] name = models.CharField(max_length=64) pwd = models.CharField(max_length=32) phone = models.CharField(max_length=11, null=True, default=None) sex = models.IntegerField(choices=SEX_CHOICES, default=0) icon = models.ImageField(upload_to='icon', default='icon/default.jpg') class Meta: # 自定义创建的表名 db_table = 'user' # admin界面中显示的表名与表名复数形式 verbose

第三章、drf-ModelSerializer

心不动则不痛 提交于 2019-12-05 04:33:21
ModelSerializer 序列化准备: 配置 settings.py # 注册rest_framework框架 INSTALLED_APPS = [ ... 'rest_framework' ] # 配置mysql数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db10', 'USER': 'root', 'PASSWORD':'root', } } ​ """ 任何__init__.py文件中 import pymysql pymysql.install_as_MySQLdb() """ ​ # 国际化 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = False ​ # 配置静态文件 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 路由 # 主路由: from django.conf.urls import url, include from django.contrib import admin from django.views

GraphQL学习之原理篇

删除回忆录丶 提交于 2019-12-05 03:45:31
前言 在上一篇文章 基础篇 中,我们介绍了GraphQL的语法以及类型系统,算是对GraphQL有个基本的认识。在这一篇中,我们将会介绍GraphQL的实现原理。说到原理,我们就不得不依托于GraphQL的规范: GraphQL 概述 GraphQL规范主体部分有6大部分,除去我们在上一节讲到的类型系统(Type System)和语言(Language),剩下的便是整个GraphQL的主流程。也就是如下图所示的: 根据规范的章节,也就是GraphQL的实现流程,我们原理篇一一来看看规范到底定义了些什么,以及在实际的使用中,是如何贴近到规范的实现的。 Js语言的实现版本是: graphql-js 流程总览 首先我们肯定会在客户端上书写查询语句,查询语句在发送到服务端之前会转换为标准的请求体。以之前的 demo 为例子,当我们发起如下的请求的时候: 客户端发起的请求体应该具备以下三个字段(POST请求): { "query": "...", "operationName": "...", "variables": { "myVariable": "someValue", ... } } 截图如下: 参考 Serving over HTTP 这些参数表达了客户端的诉求:调用哪个方法,传递什么样的参数,返回哪些字段。 服务端拿到这段Schema之后

DRF序列化

白昼怎懂夜的黑 提交于 2019-12-05 03:17:57
DRF序列化 序列化和反序列化 本质 序列化:后端把对象数据(Model)转化成字符串形式 反序列化:把字符串形式数据转化为对象数据(Model) 注意 一般字符串数据也有约束,因为字符串涉及多个端,多种语言的交互,为此提供了json形式的字符串格式以支持多语言都可以转化成自己的对象数据,便于操作 序列化模块 序列化类总览 主要分三个类,他们的关系可直接看继承了解 from rest_framework.serializers import Serializer,ModelSerializer,ListSerializer class Serializer(BaseSerializer, metaclass=SerializerMetaclass): #偏底层,开发效率不高 Serializer class ModelSerializer(Serializer): #开发运用阶段才有的序列化方式,开发效率高 ModelSerializer #完成群增,群改接口的辅助序列化类 class ListSerializer(BaseSerializer): ListSerializer Serializer使用 注意 数据存放的位置是data还是默认(区分序列化和反序列化) many=true还是false,区分多数据和单个数据 Serializer序列化 概括 1

序列化组件之Serializer类

荒凉一梦 提交于 2019-12-05 03:16:56
目录 一、基于Serializer类实现序列化器 1.1 实现序列化组件 1.2 使用序列化组件 1.3 常用字段类型及参数 二、基于Serializer类实现反序列化器 2.1 实现反序列化组件 2.2 使用反序列化组件 2.3 局部钩子和全局钩子 2.4 重写Create方法,实现添加数据库数据 在编写接口进行前后台数据交互时,一定会通过django的ORM来进行数据查询,那么就会有一个问题。 将查询出来的query_set对象转换为Json数据格式返回回去。 Django REST framework针对序列化问题给我们提供了序列化类方便我们实现自己的序列化和反序列化器。 一、基于Serializer类实现序列化器 例如,我们以及有了一个 数据库模型类User class User(models.Model): sex_choice = ((0,"男"),(1,"女")) name = models.CharField(max_length=32,unique=True) age = models.IntegerField(null=True) height = models.DecimalField(max_digits=5,decimal_places=2,null=True) sex = models.IntegerField(choices=sex_choice

Serializer组件

非 Y 不嫁゛ 提交于 2019-12-05 03:13:45
序列化 drf的核心:序列化模块 Serializer类(了解)- 偏底层,开发效率不高 ModelSerializer类(重中之重) - 开发运用阶段才有的序列化方式,开发效率高 ListSerializer类(正常)- 完成群增,群改接口的辅助序列化类 为什么要使用序列化 后台的数据多以后台类的对象存在,经过序列化后,就可以格式化成能返回给前台的数据 自定义序列化 数据准备 models.py from django.db import models # Create your models here. class User(models.Model): CHOICE_SEX = ((0, '男'), (1, '女')) name = models.CharField(max_length=64) age = models.IntegerField(default=0) height = models.DecimalField(max_digits=5, decimal_places=2, default=0) icon = models.ImageField(upload_to='icon', default='default.png') sex = models.IntegerField(choices=CHOICE_SEX, default=0) # pwd =

ModelSerializer组件

折月煮酒 提交于 2019-12-05 03:13:43
ModelSerializer组件 1)序列化与反序列功能可以整合成一个类,该类继承ModelSerializer 2)继承ModelSerializer类的资源序列化类,内部包含三部分 Meta子类、局部钩子、全局钩子 注:create和update方法ModelSerializer已经重写了,使用不需要重写 3)在Meta子类中: 用model来绑定关联的Model类 用fields来设置所有的序列化反序列化字段 用extra_kwargs来设置系统的校验规则 4)重要的字段校验规则: read_only校验规则,代表该字段只参与序列化 write_only校验规则,代表该字段只参与反序列化 required校验规则,代表该字段在反序列化是是否是必填(True)还是选填(False),不能和read_only一起使用(规则冲突) 规则细节: 如果一个字段有默认值或是可以为空,没设置required规则,默认为False,反之默认值为True 如果一个Model字段即没有设置read_only也没设置write_only,该字段默认参与序列化及反序列化 5)自定义序列化字段:在Model类中,定义方法属性(可以返回特殊值,还可以完成连表操作),在序列化类的fields属性中可以选择性插拔 6)自定义反序列化字段:在Serializer类中,自定义校验字段