Python3.5 学习二十四

本节课程大纲: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 某人的博客分类  

我的后台管理:

  我的信息管理

  标签管理

  分类管理

  文章管理

    建立

    修改文章

 

相关文章
相关标签/搜索