本节课程大纲:

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

  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之web开发“三剑客”

    #  django import django #  flask import flask # tornado import tornado

  2. spring boot所有配置

    转载 http://blog.csdn.net/lpfsuperman/article/details/78287265 # 日志配置# 日志配置文件的位置. 例如对于Logback的`classpa ...

  3. 海港(NOIP2016)

    题目链接:海港 这一题怎么样呢?还好吧,也不是太难,没有用到什么特殊的算法,但写法还是很值得学习的.下面讲一下思路: 我们维护三个队列(这里我们采用自己手写的队列,因为这比STL的要快,不过这一题,S ...

  4. 用sql 生成2016年全年的日期

    select to_char(日期,'yyyy-mm-dd') from( select to_date('2016-01-01','yyyy-mm-dd') + level 日期 from dual ...

  5. 2018.11.06 bzoj2287: 【POJ Challenge】消失之物(背包)

    传送门 先假设所有物品都能用,做01背包求出方案数. 然后枚举每个点,分类讨论扣掉它对答案的贡献. 代码: #include<bits/stdc++.h> using namespace ...

  6. springboot深入学习(二)-----profile配置、运行原理、web开发

    一.profile配置 通常企业级应用都会区分开发环境.测试环境以及生产环境等等.spring提供了全局profile配置的方式,使得在不同环境下使用不同的applicaiton.properties ...

  7. Lagrange 乘子法求最优解

    clc clear syms x y z r1 r2 w f=x^+y^+z^+w^; g1=*x-y+z-w-; g2=x+y-z+w-; h=f-r1*g1 -r2*g2; hx=diff(h,x ...

  8. Docker Swarm集群部署

    一.系统环境 1)服务器环境 节点名称 IP 操作系统 内核版本 manager 172.16.60.95 CentOs7 4.16.1-1.el7.elrepo.x86_64 node-01 172 ...

  9. ArcGIS 点云转DEM

  10. Grand Central Dispatch

    什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像NSOperationQueue,他们都允许 ...