数据校验

文件校验 加解密

一世执手 提交于 2019-12-01 22:16:14
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Text.RegularExpressions; namespace BlueCentaurea { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } /** * 设置窗体进入Panel */ private void SetFormInPanel(Form form) { this.mainPanel.Controls.Clear(); form.TopLevel = false; form.Dock = DockStyle.Fill; form.Parent = this.mainPanel; form.StartPosition = FormStartPosition.CenterScreen; form.Show

drf三大认证

孤街醉人 提交于 2019-12-01 20:35:11
源码分析   dispath方法内 self.initial(request, *args, **kwargs) 进入三大认证 # 认证组件:校验用户(游客,合法用户,非法用户) # 游客:代表校验通过直接进入下一步校验, # 合法用户:代表校验通过,将用户存储在request.user中,在进入下一步校验 # 非法用户:代表校验失败,抛出异常,返回403权限异常结果 self.perform_authentication(request) # 权限组件:校验用户权限,必须登录,所有用户登录读写,游客只读,自定义用户角色 # 认证通过:可以进入下一步校验 # 认证失败:抛出异常,返回403权限异常结果 self.check_permissions(request) # 频率组件:限制视图接口被访问的频率次数 限制的条件 # 没有达到限次:正常访问接口 # 达到限次:限制时间内不能访问,限制时间到达后,可以重新访问 self.check_throttles(request) 认证组件 def _authenticate(self): # 遍历拿到一个个认证器,进行认证 # self.authenticators配置的一堆认证类产生的认证类对象组成的 list for authenticator in self.authenticators: try: # 认证器(对象

序列化与接口

99封情书 提交于 2019-12-01 20:24:53
目录 复习 基于前一天序列化基础 整体单改 单与整体局部修改 复习 """ 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

ModelSerializer补充及ListSerializer

拜拜、爱过 提交于 2019-12-01 19:19:51
整体单改 路由层、模型层、序列化层不需要做修改,只需要处理视图层:views.py """ 1) 单整体改,说明前台要提供修改的数据,那么数据就需要校验,校验的数据应该在实例化“序列化类对象”时,赋值给data 2)修改,就必须明确被修改的模型类对象,并在实例化“序列化类对象”时,赋值给instance 3)整体修改,所有校验规则有required=True的字段,都必须提供,因为在实例化“序列化类对象”时,参数partial默认为False 注:如果partial值设置为True,就是可以局部改 1)单整体修改,一般用put请求: V2BookModelSerializer( instance=要被更新的对象, data=用来更新的数据, partial=默认False,必须的字段全部参与校验 ) 2)单局部修改,一般用patch请求: V2BookModelSerializer( instance=要被更新的对象, data=用来更新的数据, partial=设置True,必须的字段都变为选填字段 ) 注:partial设置True的本质就是使字段 required=True 校验规则失效 """ class V2Book(APIView): # 单整体改: 对 v2/books/(pk)/ 传的数据是与model对应的字典{name|price|publish|authors

2.2.4 纠错码【译】

我只是一个虾纸丫 提交于 2019-12-01 18:41:21
计算机内存偶尔会因为电线上的电压电流,宇宙射线或其他因素而犯错。为了防止这些错误,一些内存使用了侦错码或纠错码。当使用这些编码时,额外的位会以特殊的方式附加到每个内存字上。当从内存读出一个字时,通过检查这些额外的位来确认是否有错误发生。 为了理解怎样处理错误,有必要近距离看看错误到底是什么样子的。假设一个内存字包括m位数据,我们会加上r位的冗余或校验。假设总长度是n(n=m + r)。一个包括m位数据和r位校验的n位单元通常被称作n位码字。 任意给出两个码字,比如,10001001和10110001,找出有几个对应位不同是可能的。上面的例子有3位不同。为了找出几位不同,只要按位计算两个码字的异或,然后统计结果中1的数量就好了。两个码字中不同的比特位数称作汉明距离(Hamming,1950)。意思是,如果两个码字的汉明距离是d,它们的互相转化需要d位错误。比如,码字11110001和00110000的汉明距离是3,因为把一个转化成另一个需要有3位的错误。 有一个m位的内存字,所有2^m个位图都是合法的,考虑到位校验时的计算方式,只有2^n个码字是可用的。如果读取内存时出现了未验证的码字,计算机就知道发生了内存错误。给出计算校验位的算法,构建一个完整的合法码字列表是可能的,然后从这个列表中找出汉明距离最小的两个码字。这个距离就是整组编码的汉明距离。

基于前一天再补充

浪子不回头ぞ 提交于 2019-12-01 17:44:40
一. 单改(单整体改 put)   整体思路,跟post一样,将数据进行序列化,完成校验后,再做修改.   视图层: def put(self, request, *args, **kwargs): request_data = request.data pk = kwargs.get('pk') old_book_obj = models.Book.objects.filter(pk=pk).first() # 目的: 将众多数据的校验交给序列化类来处理,让序列化类扮演反序列化角色,校验成功后,序列化来帮忙入库 bookser = serializers.V2BookModelSerializer(instance=old_book_obj, data=request_data) # 得到一个序列化对象 # raise_exception = True 当校验失败,马上返回视图方法,将反序列化校验中的error_message返回给前端 bookser.is_valid(raise_exception=True) # 校验通过后,完成数据的更新: 要更新的目标,用来更新的新数据 book_obj = bookser.save() return Response({ 'status': 0, 'msg': 'ok', 'results': serializers

drf-更新四大接口-单改整体-单改局部-群改整体-群改局部-04

本秂侑毒 提交于 2019-12-01 17:30:00
目录 复习 基于前一天序列化基础 整体单改 单与整体局部修改 复习 """ 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

序列化组件之Serializer

六月ゝ 毕业季﹏ 提交于 2019-12-01 17:25:58
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 django.contrib import admin from . import models admin.site.register(models

Day71drf框架之序列化组件

二次信任 提交于 2019-12-01 17:05:17
一.序列化组件主要知识点 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

drf3

两盒软妹~` 提交于 2019-12-01 17:00:47
复习 """ 1、解析模块:全局局部配置 REST_FRAMEWORK = { # 全局解析类配置 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', 'rest_framework.parsers.FormParser', 'rest_framework.parsers.MultiPartParser' ], } form rest_framework.parsers import JSONParser, FormParser class User(APIView): parser_classes = [JSONParser, FormParser] def get(): pass 2、异常模块 REST_FRAMEWORK = { # 全局配置异常模块 'EXCEPTION_HANDLER': 'api.exception.exception_handler', } def exception_handler(exc, context): response = drf views 中的 exception_handler 先处理 if response is None: 通过context,exc记录详细的异常信息 自己自定义响应对象 return Response({ 'detail':