CSIC_716_20200113【Django入门---forms组件、session和cookie、登录认证装饰器】
forms组件
forms组件的功能:1、渲染前端页面,不用在前端手写forms表单了,不过只会渲染用户输入(输入、选择、下拉、文件)的标签,不渲染按钮以及form表单标签,。2、后端能进行非常规范的数据合法性校验3、展示校验之后的合法性信息。
使用方法:1、定义一个自定义forms类



form组件的前端渲染方式

效果差不多




浏览器中的结果:

校验的一些参数:
正则、等
钩子函数是等字段校验完成后,再自动执行钩子中的校验


cookie与session
由来
本质
具体操作
django中如何操作
cookie的操作
一定要利用HttpResponse类直接或间接产生的对象
设置
obj = HttpResponse('...')
obj.set_cookie(k,v)
可以设置超时时间
obj.set_cookie(k,v,max_age/expire)
获取
request.COOKIES.get(k)
删除
obj = HttpResponse('...')
obj.delete_cookie(k,v)
基于cookie写校验用户登录装饰器并且能够记住用户上一次想要访问的url
session的操作
django操作session默认需要使用内置的一张django_session表
如果没有执行过数据库迁移命令
no such table:django_session
django默认的超时时间为14天
设置
request.session['username'] = 'jason'
"""
1.产生一个随机字符串
2.取django session存储数据 session_key就是产生的随机字符串 session_data就是要保存的数据 expire_date超时时间
3.将产生的随机字符串返回给浏览器 浏览器本地保存键值对
sesssionid:随机字符串
"""
获取
request.session.get('username')
"""
1.自动取请求头中查找cookie锁携带的键值对 获取到随机字符串
2.拿着随机字符串取django_session表中比对数据
3.有的话就将对应的数据取出放到request.session中
"""
删除
request.session.flush() # 推荐
request.session.delete()
额外了解
设置超时时间
request.session.set_expire(value)
1.数字 秒数
2.时间数据类型
3.0
4.不放 默认采用全局失效策略
session不一定非要存到数据库
文件
缓存数据库
数据
顶

浙公网安备 33010602011771号