本节课程大纲:

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

  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. CSS-背景-渐变-文本格式化

    1.背景 1.背景色 属性:background-color 取值:合法的颜色值 注意:背景颜色和背景图片默认都从边框位置处开始填充 2.背景图片 属性:background-image 取值:url ...

  2. PHP中两个冒号是什么意思

    类中 静态方法和静态属性的引用方法 对类的静态属性和方法的直接引用,这种情况可以不需要实例化类而直接使用“::”调用

  3. 关于拼接SQL语句sqlMap的使用方法

    1.为什么使用? 主要还是为了代码中获取到值,然后带入SQL语句中拼接查询 2.怎么使用? 1)bean继承了BaseEntity类,该类中有 /** * 自定义SQL(SQL标识,SQL内容) */ ...

  4. springboot深入学习(三)-----docker

    一.spring data思路 spring data使用统一的api来对各种数据库存储技术进行数据访问操作提供了支持,包括oracle.mysql.redis.mongoDB等等.主要是通过spri ...

  5. keras backend的修改

    方法一: vim .keras/keras.json 修改“backend”:"tensorflow" 方法二: 每次在python文档中输入, import os os.envi ...

  6. Python里的拷贝

    可变数据类型:list.dict 不可变数据类型:int.float.string.tuple 引用 https://github.com/taizilongxu/interview_python#4 ...

  7. openstack之安全组管理

    命令概览 (nova-api)[root@cc07 /]# nova help|grep secgroup add-secgroup Add a Security Group to a server. ...

  8. 总结一下《vue的使用》

    1.用vue创建项目的时候, 1.安装axios,对axios进行处理,创建axios.js文件,设置基础请求地址, 设置前置守卫和独享守卫,对请求数据进行设置,(特别实在进行token验证的时候特别 ...

  9. DDR中常用概念

    一.DDR中的基本术语 (2)逻辑Bank SDRAM的内部是一个存储阵列,类似于一张表格.和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),就可以准确地找到所需要的单元格, ...

  10. 如何悄悄地提升MySQL用户权限

    温馨提示: 一次成功的非法提权,需要的必备条件是:1.对mysql权限表的查.改权限: 2.一次不经意的数据库服务器重启: 此次测试版本:5.6.25 准备邪恶用户: grant update on ...