forms组件
forms可以完成
1 生成前端html代码
2 校验数据
3 展示校验信息
forms组件的使用
1 简单forms组件校验数据
1 写一个forms校验的类 from django import forms class RegForm(forms.Form): # forms组件中定义的字段,默认必须传值 name = forms.CharField(max_length=6) pwd = forms.charField(max_length=8,min_length=3) email = forms.EmailField()
2 实例化RegForm传值
# 注意传入的字典的key必须跟类里面的变量名一致,校验的数据可以多传,但是不能少传
res = RegForm({"name":"dsb","pwd":"123","email":"123@qq.com"})
3 数据是否合法
res.is_valid() # 如果数据全部验证通过才为True否则为False
4 查看验证通过的数据
res.cleaned_data # 会将验证同的数据存放到cleaned_data中
5 查看校验失败的数据
res.errors
渲染标签
froms组件三种渲染方式
第一种(封装程度太高,没法做扩展,不推荐使用)
{{ form_obj.as_p }}
{{ form_obj.as_ul }}
第二种
<form>
<p>{{ form_obj.name.label}}{{ form_obj.name }}</p>
<p>{{ form_obj.pwd.label}}{{ form_obj.pwd }}</p>
<p>{{ form_obj.email.label}}{{ form_obj.email }}</p>
</form>
第三种
<form>
{% for foo in form_obj %}
<p>{{ foo.label }}{{ foo }}</p>
{% endfor %}
</form>
展示报错信息
在p标签内添加span标签用于显示错误信息
<p>{{ foo.label }}{{ foo }} <span>{{ foo.errors.0 }}</span></p>
局部钩子
导入 from django.core.exceptions import ValidationError
def clean_字段名称(self):
self.add_error 添加错误
校验完成返回校验的字段
全局钩子
def clean(self):
校验完成返回self.cleaned_data
forms组件可以实现三大功能,其实就是为modles种的表服务
https://www.cnblogs.com/liuqingzheng/articles/9509775.html
https://www.cnblogs.com/Dominic-Ji/p/9240365.html?tdsourcetag=s_pctim_aiomsg
http协议不保存用户状态(信息),Cookie和Session都是为了能够保存用户信息
Cookie
本质:保存在浏览器上的键值对
用途:标识当前用户信息
设置Cookie
django返回的信息都是HttpResponse对象
res = render()
res.set_cookies("name","jason")
获取Cookie
request.COOKIES['key']
request.COOKIES.get('key')
超时时间
max_age=None
Session:
本质:保存在服务器上的键值对
用途:记录当前用户信息
session其实也是基于cookie工作的为了数据更加安全,给浏览器存一个随机字符串,将用户信息存在服务端,用户在访问时,拿到随机字符串和后端进行匹配
设置Session(django默认的session过期时间是14天)
request.session['k1'] = xxx
# 上面这句话干了三件事
# 1 内部生成一个随机字符串,一个浏览器对应一个
# 2 随机数字符串与数据会存入django session表中
# 3 将随机字符串设置到浏览器的cookie中
获取session
request.session.get("k1")
删除session
# 删除当前会话的所有session数据
request.session.delete() # 只删除django_session表中的数据
# 删除当前会话数据并删除绘画的Cookie
request.session.flush() # 表和浏览器的session都删除
设置会话session和cookie的超时时间
request.seesion.set_expiry(value) # value值同cookie设置超时时间相同
如果value是整数,session会在些秒后失效
如果value是datatime或timedalta,会在这个时间后失效
如果value是0,会在用户关闭浏览器后失效
如果value是None,session会依赖全局session失效策略
https://www.cnblogs.com/Dominic-Ji/p/10718365.html#autoid-9-0-0?tdsourcetag=s_pctim_aiomsg