13-会话技术及表单(cookies和session)
01-什么是Cookies
02-Cookie常用参数
03-使用session
04-django表单介绍,及简单表单的操作
01-什么是Cookies
cookies设置的原因: 1. http请求的无记忆性; 2.加快访问速度 3. 减少服务器压力
cookies特点:
cookies保存在客户端浏览器上的键值对,且每次访问页面都会带着cookies
cookies可以主动清除
cookies也可以被"伪造",可以被别人带着cookies操作你的账号
cookies会根据域名进行分类,不能跨域共享,也就是说百度有百度的,JD有京东的
cookies必须请求数据成功后才能有用哈
浏览器可以设置不接收Cookies
服务器端设置的cookies
cookies可以设置超时时间, max_age=10
02-Cookie常用参数
·key:键
·value:值
·max_age:多久后过期,时间为秒
·expires:过期时间,为具体时间
·path:生效路径
·domain:生效的域名
·secure:HTTPS传输时应设置为true
·httponly:值应用于http传输,JavaScript无法获取
实例
1 def index(request): 2 times = request.COOKIES.get('times') 3 if times: # 如果存在就加次数1 4 times = str(int(times)+1) 5 else: # 如果不存在就定义这1 6 times ='1' 7 responst = render(request,'teacher/index.html',context={'times':times}) 8 responst.set_cookie('times', times, max_age=10) # 把参数加入到COOKIE 9 return responst
使用session:
启用会话后,每个HttpRequest对象将具有一个session属性,它是一个类字典对象
- get(key, default=None):根据键获取会话的值
- clear():清除所有会话
- flush():删除当前的会话数据并删除会话的Cookie
- del request.session['member_id']-:删除
1 def login(request): 2 if request.method == 'POST': 3 username = request.POST.get('username') 4 passwork = request.POST.get('password') 5 if username == 'guang' and passwork == '123': 6 request.session['name'] = username 7 request.session.set_expiry(600) 8 return redirect('/teacher/index/') 9 else: 10 return render(request,'teacher/login.html')
# session的使用 def index(request): name = request.session.get('name') # 检查是否已登录 if not name: return redirect('/teacher/login/') #反回登录页面 #已经登录就执行程序
# 用户退出登录 def logout(request): # 用户退出模型 request.session.flush() # 删除session信息 return redirect('teacher/login.html') # 返回登录页面
04-django表单介绍,及简单表单的操作
用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解。
Form表单的功能
- 自动生成HTML表单元素
- 检查表单数据的合法性
- 如果验证错误,重新显示表单(数据不会重置)
- 数据类型转换(字符类型的数据转换成相应的Python类型)
Form相关的对象包括
- Widget:用来渲染成HTML元素的工具,如:forms.Textarea对应HTML中的<textarea>标签
- Field:Form对象中的一个字段,如:EmailField表示email字段,如果这个字段不是有效的email格式,就会产生错误。
- Form:一系列Field对象的集合,负责验证和显示HTML元素
- Form Media:用来渲染表单的CSS和JavaScript资源。
Form Objects
Form对象封装了一系列Field和验证规则,Form类都必须直接或间接继承自django.forms.Form,
django模型字段和表单字段对应
例子:
forms:
views:
html: