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不一定非要存到数据库
					文件
					缓存数据库
					数据

  

 

 

 

 

 

 

 

 

 

posted @ 2020-01-13 20:44  HEU葉孤城  阅读(131)  评论(0编辑  收藏  举报