数据校验

drf框架 ModelSerializer

不想你离开。 提交于 2019-12-01 16:53:54
ModelSerializer 一、准备 配置settings.py INSTALLED_APPS = [ # ... 'rest_framework', ] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dg_proj', 'USER': 'root', 'PASSWORD': '123', } } """ 任何__init__文件 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.static import serve from django.conf import settings urlpatterns

整体单改,单局部改,整体局部改,ListSerializer类

核能气质少年 提交于 2019-12-01 16:50:33
复习 """ 1、ModelSerializer序列化类 models.py class BaseModel(models.Model): is_delete = models.BooleanFiled(default=Flase) class Meta: abstract = True # ***** class Car(BaseModel): name = models.CharFiled(max_length=64) @property def my_name(self): # 自定义字段:可以连表,可以完成数据相关的逻辑 return '插拔式字段的值' serializes.py class CarModelSerializer(ModelSerializer): class Meta: model = models.Car fields = ('name', ) extra_kwargs = { 'name': { 'write_only|read_only': True } } # 局部钩子、全局钩子 views.py ser_obj = CarModelSerializer(数据) # 产生序列化类对象(可能参与序列化,也可能参与反序列化) ser_obj.data # 序列化的数据 ser_obj.is_valid() # 启动序列化校验规则(系统内容=>局部钩子

异常模块,响应模块,解析模块

余生颓废 提交于 2019-12-01 16:47:47
解析模块 为什么要配置解析模块 """ 1)drf给我们通过了多种解析数据包方式的解析类 2)我们可以通过配置来控制前台提交的哪些格式的数据后台在解析,哪些数据不解析 3)全局配置就是针对每一个视图类,局部配置就是针对指定的视图来,让它们可以按照配置规则选择性解析数据 """ 源码入口 # APIView类的dispatch方法中 request = self.initialize_request(request, *args, **kwargs) # 点进去 ​ # 获取解析类 parsers=self.get_parsers(), # 点进去 ​ # 去类属性(局部配置) 或 配置文件(全局配置) 拿 parser_classes return [parser() for parser in self.parser_classes]  全配置:项目settings.py文件 REST_FRAMEWORK = { # 全局解析类配置 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', # json数据包 'rest_framework.parsers.FormParser', # urlencoding数据包 'rest_framework.parsers.MultiPartParser' # form

drf 核心 序列化组件

丶灬走出姿态 提交于 2019-12-01 13:58:49
知识点: Serializer(偏底层)、ModelSerialize(重点)、ListModelSerializer(辅助群改) 一、Serializer 1、序列化准备: 模型层: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 = 'old_boy_user' verbose_name = '用户' verbose_name_plural = verbose_name def __str__(self): return '%s' % self.name 后台管理层:admin.py from django

Django之Form和ModelForm组件

▼魔方 西西 提交于 2019-12-01 12:54:32
一 Form介绍 在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。 Django form组件就实现了上面所述的功能。 总结一下,其实form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容   普通方式手写注册功能 views.py # 注册 def register(request): error_msg = "" if request.method == "POST": username = request.POST.get("name") pwd = request.POST.get("pwd") # 对注册信息做校验 if len(username) < 6: # 用户长度小于6位 error_msg = "用户名长度不能小于6位" else: # 将用户名和密码存到数据库 return HttpResponse("注册成功") return render(request, "register.html", {"error_msg": error_msg}) View Code login.html <

Struts2 校验框架学习笔记

痴心易碎 提交于 2019-12-01 12:49:44
truts2 校验框架 Struts2 和 Struts1 同样也提供了校验框架 , 但在 Struts2 已经不再把校验框架做为一个插件 , 而是已经内置到了 Struts2 中 , 而且配置起来更为简单方便 , 功能也更强大。 下面以一个例子来说明 Struts2 校验框架的使用。 1 在 myeclipse 中创建一个 web 工程,在 src 目录下创建 struts.xml 配置文件,添加好 xml 标头,配置 web.xml 文件。 1-1 .了解一下我做的简单例子需求,实现一个用户注册的功能,用户信息包括用户名,密码,确认密码,年龄,出生日期,毕业日期等信息。在注册过程需要提供以下校验规则: [1] 用户必填,长度在 6-10 之间 [2] 密码和确认密码必填,两次输入密码要一致长度,在 6-10 之间 [3] 年龄必须是数字 界于 1-150 之间 [4] 出生日期和毕业日期必填,且出生日期必须早于毕业日期 要求:使用 struts2 提供的 xml 配置方式进行校验。 1-2 .首先创建一个 register.jsp 页面,代码如下: <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-

drf框架 - 序列化组件 | Serializer

扶醉桌前 提交于 2019-12-01 12:48:39
序列化组件 知识点:Serializer(偏底层)、ModelSerializer(重点)、ListModelSerializer(辅助群改) 序列化与反序列化 序列化: 将对象序列化成字符串用户传输 反序列化: 将字符串反序列化成对象用于使用 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'

序列化模块Serializer

北慕城南 提交于 2019-12-01 12:44:24
序列化组件: 知识点:Serializer(偏底层)、ModelSerializer(重点)、ListModelSerializer(辅助群改) 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 = 'old_boy_user' verbose_name = '用户' verbose_name_plural = verbose_name def __str__(self): return '%s' % self.name 后台管理层:admin.py from

解析模块、异常处理模块、响应模块、序列化和反序列化组件

元气小坏坏 提交于 2019-12-01 10:26:34
解析模块 为什么要配置解析模块 1)drf给我们通过了多种解析数据包方式的解析类 2)我们可以通过配置来控制前台提交的哪些格式的数据后台在解析,哪些数据不解析 3)全局配置就是针对每一个视图类,局部配置就是针对指定的视图来,让它们可以按照配置规则选择性解析数据 源码入口 # APIView类的dispatch方法中 request = self.initialize_request(request, *args, **kwargs) # 点进去 # 获取解析类 parsers=self.get_parsers(), # 点进去 # 去类属性(局部配置) 或 配置文件(全局配置) 拿 parser_classes return [parser() for parser in self.parser_classes] 全局配置:项目settings.py文件 REST_FRAMEWORK = { # 全局解析类配置 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', # json数据包 'rest_framework.parsers.FormParser', # urlencoding数据包 'rest_framework.parsers.MultiPartParser' # form-date数据包 ],

drf框架模块

前提是你 提交于 2019-12-01 10:26:14
解析模块 为什么要配置解析模块 """ 1) drf给我们通过了多种解析数据包方式的解析类 2) 我们可以通过配置来控制前台提交的哪些格式的数据后台再解析,哪些数据不解析 3) 全局配置就是针对每一个视图类,局部配置就是针对指定的视图来,让它们可以按照配置规则选择性解析数据 """ 源码入口 # APIView类的dispatch方法中 request = self.initialize_request(request, *args, **kwargs) # 点进去 # 获取解析类 parsers=self.get_parsers(), # 点进去 # 去类属性(局部配置) 或 配置文件(全局配置) 拿 parser_classes return [parser() for parser in self.parser_classes] 全局配置: 项目settings.py文件 REST_FRAMEWORK = { # 全局解析类配置 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', # json数据包 'rest_framework.parsers.FormParser', # urlencoding数据包 'rest_framework.parsers.MultiPartParser' # form