本节课程大纲:

-----------------------------------------------------------------------------------------------------------

  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 学习二十四的更多相关文章

  1. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  2. Java开发学习(二十四)----SpringMVC设置请求映射路径

    一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...

  3. JavaWeb学习 (二十四)————Filter(过滤器)常见应用

    一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题 1 package me.gacl.web.filter; 2 3 import ja ...

  4. Python3.5 学习二十二

    回顾: 发送请求时:发送请求头和请求数据 request.META和request.request.body 响应请求时:响应头和响应返回数据 response.HEADER和response.bod ...

  5. Python3.5 学习二十

    学会用三种方法检索数据 1.对象方式 2.字典方式 3.元组方式 models后面,如果是.values() 则为字典方式 如果是value_list() 则为元组方式 跨表操作时,如果是对象,可以用 ...

  6. ballerina 学习二十四 监控ballerina

    ballerina 服务的监控还是比较方便的,以及集成了Prometheus Grafana Jaeger Elastic Stack 监控服务监控的集成 主要包含以下几个步骤 a. 安装docker ...

  7. python学习二十四天函数参数之默认参数

    函数参数就是向函数传递参数,可以传递一个,可以是更多个,有的参数有值,有的没有,函数可以设置默认参数,默认参数必须放参数最后面. 1,不传递参数,设置默认参数 def hello(a,b,c='123 ...

  8. Salesforce LWC学习(二十四) Array.sort 浅谈

    本篇参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort sal ...

  9. ElasticSearch7.3学习(二十四)----相关度评分机制详解

    1.算法介绍 relevance score(相关性分数) 算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度.Elasticsearch使用的是 term freque ...

随机推荐

  1. maven下的jar项目打包的方法

    1.先对pom项目进行install: RunAs->maven install,如果出现如下错误: Failed to execute goal org.apache.maven.plugin ...

  2. NOIP模拟测试1(2017081501)

    好,今天是cgg第一次举行模拟测试,希望各位支持. 时间限制:2小时 题目链接: 题目一:水得都没名字了 题目二:车站 题目三:选数 不要觉得2小时太少,我的题目很良心,都很简单. 答案可以在模拟测试 ...

  3. python第一类对象,闭包,迭代器

    一.第一类对象 第一类对象 -> 函数名 -> 变量名 1.特征:     函数对象可以像变量一样进行赋值     还可以作为列表的元素进行使用     还可以作为返回值返回     还可 ...

  4. js-day02

    1.数据类型转换2.函数3.分支结构*******************************1.数据类型转换 数据类型:number,string,boolean,null,undefined ...

  5. SQL中datetime和timestamp的区别

    在开发一个简单的报名程序时,要求在每一条新插入的记录后面添加一个日期字段,方便日后查询和排序.于是立即百度,发现可以使用datetime或timestamp两种日期类型来实现.这对于爱纠结的我来说是不 ...

  6. 2019.01.17 bzoj1853: [Scoi2010]幸运数字(容斥+dfs)

    传送门 搜索菜题,然而第一次没有注意然后爆longlonglong longlonglong了. 题意:称所有数位由6,86,86,8组成的数为幸运数字,问一个一个区间[l,r][l,r][l,r]中 ...

  7. 2018.12.31 bzoj4001: [TJOI2015]概率论(生成函数)

    传送门 生成函数好题. 题意简述:求nnn个点的树的叶子数期望值. 思路: 考虑fnf_nfn​表示nnn个节点的树的数量. 所以有递推式f0=1,fn=∑i=0n−1fifn−1−i(n>0) ...

  8. 查看mysql数据库中的所有用户

    SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; @前面为用户名,后面对应的‘% ...

  9. 第四章,java面向对象特性

    4.1 特性 封装,继承, 多态(编译时:方法的重载,同一个类里面不同方法可以用同一个方法名只是传入参数不同, 运行时多态:基础类提供一个接口,在编译时只调用基础类的接口,在运行时才确定到底是哪一个子 ...

  10. 未找到导入的项目“C:\Program Files\MSBuild\Microsoft\Silverlight\v5.0\Microsoft.Silverlight.CSharp.targets”。

    问题描述: 原先创建的Silverlight程序,后来系统重装了,再打开Silverlight程序时提示:C:\Users\yzg\Desktop\ocr\TJSilverlight\TJSilver ...