本节课程大纲:html
-----------------------------------------------------------------------------------------------------------python
Model:jquery
-数据库操做数据库
-验证小程序
Form:服务器
class LoginForm():session
email = fields.EmailField()mvc
-is_valid ->每个字段进行正则(字段内置正则) + clean_字段 -> clean(__all__) -> _post_clean函数
-cleand_data源码分析
-error
推荐使用,耦合低
-----------------------------------------------------------------------------------------------------------
1、ModelForm
Model+Form结合体 --> 验证+数据库操做
结合20181010的实例,看使用ModelForm带来的便利性
obj.save()可将单表、多对多关联表数据一并保存
但只会保存单表数据,而不保存多对多表记录,能够看源码分析其原理。
想要加入M2M表记录,须要多执行如下一句代码:
obj.save_m2m()
Userinfo列表编辑保存,用ModelForm的实现源码中,注意点:
一、修改界面的数据保存,须要引用instance
Django2.0后,URL中须要引入re_path来生成一个带有正则的url对应
页面上也能够自定义一些额外的字段,不须要保存到数据库的
验证的clean钩子用法,和form以前讲的彻底同样。
对于ModelForm回顾:
一、能够生成HTML标签,标签能够默认排列,能够逐个写入
class Meta:。。。定制
二、mf=xxxModelForm(instance=Modelobj) 写入默认值
三、能够自定义加字段,不带入数据库,作验证用等
四、各类验证 is_valid() ->每一个字段正则、每一个字段方法、clean、Postclean
五、mf.save() =>instace = mf.save(False)
instace.save()
mf.save_m2m()
耦合度高,使用方便,但局限性高,小程序能够用,可能会大的程序就不要用了。
2、Ajax
Ajax全套 http://www.cnblogs.com/wupeiqi/articles/5703697.html
Python开发目录 http://www.cnblogs.com/wupeiqi/articles/5433893.html
原生
一、利用原生XmlHTTPResponse来发送POST请求时,都要设置请求头,必定要注意
二、原生操做对象的兼容性设置
function getXHR(){
var xhr = null;
if(XMLHttpRequest){
xhr=new XMLHttpRequest();
}
else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
return xhr;
}
jQuery
伪Ajax操做:
伪Ajax提交的数据获取:
三种选择的时机:
若是是普通数据(非文件),推荐使用顺序:jQuery,XMLHttpRequest,iframe
3、文件上传(图片预览)
-Form提交
-Ajax上传
{# jquery上传文件时,须要设置如下两个参数#}
processData:false,
contentType:false,
-iframe上传
三种方式实现代码见程序20181010
文件上传选择时机:iframe,jQuery(FormData),XMLHttpRequest(FormData)
图片上传后的预览:上传后找到文件路径,而后加一个‘/’,做为可读取位置
用Jquery动态生成载入一个img标签显示便可。
若是不想单独点按钮上传,能够在文件input框的onchange事件中写上传方法。
4、图片验证码 + Session
实现流程:
Get请求:生成验证码、存放入Session
建立一张图片给用户返回
POST请求:提交数据,提交验证码,服务器将提交的数据和Session进行对比验证
静态文件不须要写URL,由于Django是后台在帮助打开读取返回的操做。
总结:
--session
-check_code.py(依赖:Pillow;字体文件)
-刷新验证码:利用src属性后面加“?”
5、富文本插件 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 某人的博客分类
我的后台管理:
我的信息管理
标签管理
分类管理
文章管理
建立
修改文章