练习代码位置

实例代码位置 --> app: myblog

Form

利用Form表单验证,自己写的html
思路:
新建一个类 LoginForm(forms.Form)
新建对象 obj = LoginForm(request.Post)
常用方法:
obj.is_valid()
obj.clean()
obj.errors.as_json() 验证字段类型: --- 和models的成员基本一致
CharField()
IntegerField()
EmailField() 字段参数:
required
max_length min_length
自定义验证器:
validators=[func] # 自定义验证类型,如果不合法,直接raise就好 注意传过去的数据类型 个性化提示:
error_messages={"required":"不能为空","invalid":"不合法哦"} 个性化外观
mychoices = ((1,"female"),(1, "male"),)
widget=forms.Select(choices=mychoices, attrs={"k1":"v1"}) 自动生成html
思路:
1、 和上面一样
2、 把loginForm_obj 传给前端,前端自己拿数据
{% obj.username %}
{%obj.password %}
{%obj.errors.username.0 %}
{%obj.errors.password.0 %}

ModelForm

CSRF

    网站不允许直接post数据,需要先get一次数据,返回的时候网站返回一个token给页面,页面下次访问的时候会带着token过来

form 方式

    外兜
这种比较简单,直接提交表单就行了
因为表单里面直接有一个hidden的input widget

ajax 方式

    内兜
需要自己去获取cookie,然后提交给网站
注意要导入jquery and js.cookie.js <script src="/static/plugin/jquery/jquery-1.8.0.js"></script>
<script src="/static/plugin/jquery/jquery.cookie.js"></script> var csrftoken = $.cookie('csrftoken'); function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
} //每次ajax请求之前都会执行这个函数
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});

cookie and session

概述

cookie  存在前端浏览器里面的一个字符串
默认不能跨域名访问
session 存在后端服务器上的一个状态信息 e.g. 登录状态

cookie

设置:
obj = render(reqeust, "/static/myblog/cookie.html")
obj.set_ookie("k1","v1") # 把cookie写入html中
obj.set_cookie(key,value, max_age, path="/")
max_age: 过期时间, 单位秒
path: 该cookie只在path下面能使用,默认是 / ,对该域名全局生效 获取:
cookie_cli = request.COOKIES # 获取到的是一个字典

session

概述:
session 依赖于cookie实现功能,会把session_id 利用cookie的渠道写入浏览器,敏感信息放到服务上
session_id 对开发者隐藏,不用管, session_id 唯一标识一个浏览器
django 默认支持session,默认存储到数据库中 table: django_session 过期时间 两周 使用:
当成一个字典使用
request.session["user"] = "yangli"
def request.session["user"]
request.session.delete(request.session.session_key) session 存放位置配置 settings.py 配置文件即可
db
cache
file
cached_db
signed_cookies
  • level1
  • level2
    • level2-1
    • level2-2
  • level3

最新文章

  1. Echarts 页面多图自适应的解决办法 (转)
  2. 格式化Double类型
  3. Eclipse中集成Tomcat
  4. mysqlbinlog快速遍历搜索记录 (转)
  5. ubuntu下xampp的安装
  6. C# 模拟POST提交文件
  7. IOS程序内发短信 MFMessageComposeViewController
  8. springMVC记录系统日志的几种方式
  9. UEditor编辑器第一次赋值失败的解决方法
  10. 一份传世典文:十年编程(Teach Yourself Programming in Ten Years)
  11. UITextFiled的输入框改成一条下划线
  12. MongoDB 3.0新增特性一览
  13. Google Android SDK开发范例大全笔记 一
  14. zTree入门实例(一眼就看会)
  15. 菜鸟vimer成长记——第4.2章、编程插件
  16. groovy动态类型--能力式设计
  17. ascii#ascii,对象类中找__repr__,获取其返回值
  18. cf Permute Digits(dfs)
  19. npm 常用指令 使用指令删除 node_modules 包
  20. 关于lua 5.3 服务端热更新流程

热门文章

  1. ECMAScript基本语法——①与HTML的结合方式
  2. Redis Desktop Manager 连接不上redis的问题
  3. 操作系统-多用户如何理解(Linux)
  4. sql查询 —— 连接查询
  5. &lt;img src = &quot;...&quot;/&gt;的一个图片上面怎么在放上字
  6. monkey log 处理
  7. Charles 查看https请求数据 Mac/ android
  8. Python_内置函数和匿名函数
  9. Redis Distributed lock
  10. 使用VS2017开发安卓app(2)新建项目