Python3.5 学习二十四
本节课程大纲:
-----------------------------------------------------------------------------------------------------------
Model:
-数据库操作
-验证
Form:
class LoginForm():
email = fields.EmailField()
-is_valid ->每一个字段进行正则(字段内置正则) + clean_字段 -> clean(__all__) -> _post_clean
-cleand_data
-error
推荐使用,耦合低
-----------------------------------------------------------------------------------------------------------
一、ModelForm
Model+Form结合体 --> 验证+数据库操作

结合20181010的实例,看使用ModelForm带来的便利性
obj.save()可将单表、多对多关联表数据一并保存
但
只会保存单表数据,而不保存多对多表记录,可以看源码分析其原理。
想要加入M2M表记录,需要多执行以下一句代码:
obj.save_m2m()
Userinfo列表编辑保存,用ModelForm的实现源码中,注意点:
1、修改界面的数据保存,需要引用instance

Django2.0后,URL中需要引入re_path来生成一个带有正则的url对应
页面上也可以自定义一些额外的字段,不需要保存到数据库的

验证的clean钩子用法,和form之前讲的完全一样。
对于ModelForm回顾:
1、可以生成HTML标签,标签可以默认排列,可以逐个写入
class Meta:。。。定制
2、mf=xxxModelForm(instance=Modelobj) 写入默认值
3、可以自定义加字段,不带入数据库,做验证用等
4、各种验证 is_valid() ->每个字段正则、每个字段方法、clean、Postclean
5、mf.save() =>instace = mf.save(False)
instace.save()
mf.save_m2m()
耦合度高,使用方便,但局限性高,小程序可以用,可能会大的程序就不要用了。
二、Ajax
Ajax全套 http://www.cnblogs.com/wupeiqi/articles/5703697.html
Python开发目录 http://www.cnblogs.com/wupeiqi/articles/5433893.html
原生
1、利用原生XmlHTTPResponse来发送POST请求时,都要设置请求头,一定要注意
2、原生操作对象的兼容性设置
function getXHR(){
var xhr = null;
if(XMLHttpRequest){
xhr=new XMLHttpRequest();
}
else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
return xhr;
}
jQuery
伪Ajax操作:

伪Ajax提交的数据获取:

三种选择的时机:
如果是普通数据(非文件),推荐使用顺序:jQuery,XMLHttpRequest,iframe
三、文件上传(图片预览)
-Form提交
-Ajax上传
{# jquery上传文件时,需要设置以下两个参数#}
processData:false,
contentType:false,
-iframe上传
三种方式实现代码见程序20181010
文件上传选择时机:iframe,jQuery(FormData),XMLHttpRequest(FormData)
图片上传后的预览:上传后找到文件路径,然后加一个‘/’,作为可读取位置
用Jquery动态生成载入一个img标签显示即可。
如果不想单独点按钮上传,可以在文件input框的onchange事件中写上传方法。
四、图片验证码 + Session
实现流程:
Get请求:生成验证码、存放入Session
创建一张图片给用户返回
POST请求:提交数据,提交验证码,服务器将提交的数据和Session进行对比验证

静态文件不需要写URL,因为Django是后台在帮助打开读取返回的操作。




总结:
--session
-check_code.py(依赖:Pillow;字体文件)
-刷新验证码:利用src属性后面加“?”
五、富文本插件 CKEditor,UEEditor,TinyEditor,KinkEditor
-基本使用
参考笔记:http://www.cnblogs.com/wupeiqi/articles/6307554.html
-文件上传、多文件上传、文件空间管理
学习Kindle中各种文件上传

--XSS攻击(过滤的函数)
关于跨表操作的性能提升方式:
1 Queryset.selectedrelated 直接跨表到关联表,读所有记录
2 Queryset.prefishrelated 两次跨表,第一次找__ID字段值,第二次跨表查 in __ID字段值的记录,放入内存,以提高效率
作业:
主站:
http://127.0.0.1:8000 博客首页
http://127.0.0.1:8000/xxx/1.html 某人的某篇文章
个人博客:
http://127.0.0.1/xxx/ 某人的博客
http://127.0.0.1/xxx/tag/python.html 某人的博客分类
http://127.0.0.1/xxx/catetory/mvc.html 某人的博客分类
http://127.0.0.1/xxx/date/2011-11.html 某人的博客分类
个人后台管理:
个人信息管理
标签管理
分类管理
文章管理
创建
修改文章

Python3.5 学习二十四的更多相关文章
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- Java开发学习(二十四)----SpringMVC设置请求映射路径
一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...
- JavaWeb学习 (二十四)————Filter(过滤器)常见应用
一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题 1 package me.gacl.web.filter; 2 3 import ja ...
- Python3.5 学习二十二
回顾: 发送请求时:发送请求头和请求数据 request.META和request.request.body 响应请求时:响应头和响应返回数据 response.HEADER和response.bod ...
- Python3.5 学习二十
学会用三种方法检索数据 1.对象方式 2.字典方式 3.元组方式 models后面,如果是.values() 则为字典方式 如果是value_list() 则为元组方式 跨表操作时,如果是对象,可以用 ...
- ballerina 学习二十四 监控ballerina
ballerina 服务的监控还是比较方便的,以及集成了Prometheus Grafana Jaeger Elastic Stack 监控服务监控的集成 主要包含以下几个步骤 a. 安装docker ...
- python学习二十四天函数参数之默认参数
函数参数就是向函数传递参数,可以传递一个,可以是更多个,有的参数有值,有的没有,函数可以设置默认参数,默认参数必须放参数最后面. 1,不传递参数,设置默认参数 def hello(a,b,c='123 ...
- Salesforce LWC学习(二十四) Array.sort 浅谈
本篇参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort sal ...
- ElasticSearch7.3学习(二十四)----相关度评分机制详解
1.算法介绍 relevance score(相关性分数) 算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度.Elasticsearch使用的是 term freque ...
随机推荐
- webapp利用iscroll实现同时横滚|竖滚
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- js 异步加载和同步加载
异步加载 异步加载也叫非阻塞模式加载,浏览器在下载js的同时,同时还会执行后续的页面处理.在script标签内,用js创建一个script元素并插入到document中,这种就是异步加载js文件了: ...
- Redis (非关系型数据库) 数据类型 之 list列表类型
Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边) list即可以作为“栈”也可以作为"队列". 操作: >lpush ...
- The Django Book(自定义ModelAdmi类)
默认的,管理界面下显示的东西只是 python2:def __unicode__(self): 和 python3:def __str__(self): 中返回的字段内容 想要让它更加的多元化的话 c ...
- 2019.02.09 bzoj1042: [HAOI2008]硬币购物(完全背包+容斥原理)
传送门 题意简述:有四种面值的硬币,现在qqq次询问(q≤1000)(q\le1000)(q≤1000),每次给出四种硬币的使用上限问最后刚好凑出sss块钱的方案数(s≤100000)(s\le100 ...
- 2018.12.31 NOIP训练 偶数个5(简单数论)
传送门 对于出题人zxyoizxyoizxyoi先%\%%为敬题目需要龟速乘差评. 题意简述:5e55e55e5组数据,给出n,请你求出所有n位数中有偶数个5的有多少,n≤1e18n\le1e18n≤ ...
- 2-具体学习Github---init add commit log diff
1.安装: 首先找到git的官网,内部有下载链接. 也可以用下面的,我的是win7的64位系统: 可以在此处下载:Git-2.13.0-64-bit.exe链接:http://pan.baidu.co ...
- UVa 1610 Party Games(思维)
题意: 给出一系列字符串,构造出一个最短字符串(可以不在集合中)大于等于其中的一半,小于另一半. 析:首先找出中间的两个字符串,然后暴力找出最短的字符串,满足题意. 代码如下: #include &l ...
- Java交流分享(522818473)
今天来分享哈自己的技术交流群,记得还是刚接触Java建立的群,那时候学习Java很有动力,经常和群友谈论问题,现在都专注公司业务和技术这一块,很多后端框架都没用除了restful,其他都是封装的,不过 ...
- 未找到导入的项目“C:\Program Files\MSBuild\Microsoft\Silverlight\v5.0\Microsoft.Silverlight.CSharp.targets”。
问题描述: 原先创建的Silverlight程序,后来系统重装了,再打开Silverlight程序时提示:C:\Users\yzg\Desktop\ocr\TJSilverlight\TJSilver ...