本节课程大纲:

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

  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. Python 中Lambda 表达式 实例解析

    Lambda 表达式 lambda表达式是一种简洁格式的函数.该表达式不是正常的函数结构,而是属于表达式的类型.而且它可以调用其它函数. 1.基本格式: lambda 参数,参数...:函数功能代码 ...

  2. SQL Server 2008中的MERGE(不仅仅是合并)

    SQL Server 2008中的MERGE语句能做很多事情,它的功能是根据源表对目标表执行插入.更新或删除操作.最典型的应用就是进行两个表的同步. 下面通过一个简单示例来演示MERGE语句的使用方法 ...

  3. 【Web】Sublime Text 3 连接sftp/ftp(远程服务器)

    在 Win 下常用 Xftp 软件来和远程服务传递文件,但是要是在项目开发的时候频繁的将远程文件拖到本地编辑然后再传回远程服务器,那真是麻烦无比,但是Sublime中SFTP插件,它让这世界美好了许多 ...

  4. SpringMVC 学习 九 SSM环境搭建 (二) Spring配置文件的编写

    spring配置文件中需要干的事情 (一)开启  Service与pojo包的注解扫描 注意:spring 扫描与表对应的实体类,以及service层的类,不能用来扫描Controller层的类,因为 ...

  5. python中从内部循环直接跳出多层循环

    学习循环的时候碰到一道题,需要从内部循环中直接跳出所有循环,想了很久终于想到一种好办法(小白认知) 题目为:使用while循环输出100-50,从大到小,到50时,再循环输出0-50,从小到大. ex ...

  6. Linux mount命令

    mount 1.作用 mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者. 2.格式 mount -a [-fv] [-t vfstype] [-n] [-r ...

  7. Django之auth模块用户认证模块

    一.Auth模块 1)auth模块是什么.登录后台使用的账号密码,则就是使用的auth模块创建的表 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站 ...

  8. 2018.11.07 bzoj2751: [HAOI2012]容易题(easy)(组合数学)

    传送门 组合数学一眼题. 感觉一直做这种题智商会降低. 利用组合数学的分步计数原理. 只用关心每个数不被限制的取值的总和然后乘起来就可以了. 对于大部分数都不会被限制,总和都是n(n+1)2\frac ...

  9. Codeforces Round #524 (Div. 2) F. Katya and Segments Sets(主席树)

    https://codeforces.com/contest/1080/problem/F 题意 有k个区间,区间的种类有n种,有m个询问(n,m<=1e5,k<=3e5),每次询问a,b ...

  10. Win7 VS2015环境使用SDL2-2.0.4

    之前在VS中使用SDL2,如果只链接SDL2.lib,会提示 error LNK2019: unresolved external symbol _main referenced in functio ...