form组件+cookie+session总结

1、forms 组件

    -数据校验功能
1、定义
-新建一个py文件
-导入from django import forms
-写一个类继承 forms.Form
-把你需要校验的(字段的条件)属性写到类里面
-比如:name = forms.CharField(max_length=8,min_length=3,label="用户名",
error_messages={"max_length":"超出范围",
"min_length":"太短了","required":"该项不能为空"},) -局部钩子函数
-def clean_name(self):
-name=self.cleaned_data.get("name")
if name.startswith("sb")
-raise ValidationError("不能以sb开头")
else:
#切记,如果正确,一定要返回name
return name -全局钩子函数
-使用ValidationError需导入
-from django.core.exceptions import ValidationError -def clean(self):
-pwd = self.cleaned_data.get("pwd")
-re_pwd = self.cleaned_data.get("re_pwd")
-if pwd ==re_pwd:
-# 正确,返回cleaned_data
-return None
-else:
#校验不通过:raise ValidationError('两次密码不一致'),错误放到__all__
-return ValidationError("两次密码不一致")
2 views中使用:
def test(request):
if request.method=='GET':
regform=RegForm()
else:
regform=RegForm(request.POST)
if regform.is_valid():
#一般情况需要存数据库了
pass
else:
error_all=regform.errors.get('__all__')
# error_all=regform.errors['__all__']
return render(request,'register.html',locals())
3 模板中使用
<form action=""> {% for foo in regform %}
{{ foo.label }}:{{ foo }} <span>{{ foo.errors.0 }}</span>
{% endfor %}
<input type="submit"> <span>{{ error_all }}</span> </form> 2、cookie和session
-1、cookie:由服务器产生,存放在客户端浏览器上的键值对
-2、django中使用:
-设置值:
obj = HttpResponse(“ok”)
obj.set.cookie("key","value")
return obj
-取值:
request.COOKIES.get("key")
request.COOKIES["key"]
-删除值:
obj = HttpResponse(“ok”)
obj.datele_cookie("key") -3、session:保存在服务器上的键值对
-设置值:
-request.session["key"]="value"
干了的事:
1、生成一个随机字符串:dasfjdfks
2、在django——session表中存入dasfjdfks {"key":"value"} 超市时间
3、把sessionid:dasfjdfks写入到cookie
-取值:
-request.session.get("key")
-删除值:
-request.session.flush():全删除
-request.session.detele():只删除数据库 -其他配置参数:
-了解 3、Auth模块
1、Django自带的用户认证模块,可以快速实现都登录,注销,修改密码.... #from django.contrib.auth.models import AbstractUser
2、扩展auth表,需要继AbstractUser
3、一定不要忘记在setting中配置:AUTH_USER_MODEL = "app01.UserInfo"
-# 指定以后再作用户认证,都用这个表 4、它提供的功能:
-from django.contrib.auth import authenticate,login,logout
-用户认证:authenticate(username=lqz,password=123)
-用户一旦认证通过,调用login(request,user),以后从reuqest.user 中就能取出当前登录人对象
-退出:logout(request),request.user就是匿名用户
-校验是否通过认证(是否登录):request.user.is_authenticated()
-创建普通用户
-models.UserInfo.objects.create_user(username=lqz)
-创建超级用户
-models.UserInfo.objects.create_superuser(username=lqz)
-修改密码
-用user对象.set_password(新密码)
-一定要记住sava
-校验密码
-check_password(password)
-登录认证装饰器
# @login_required(login_url='/login/')
-login_required(login_uel="/login/")
is_staff: 用户是否拥有网站管理权限:create_superuser: is_staff 是 1
id_active: 是否允许用户登录,设置为False,可以在不删除用户的前提下禁止用户登录。
上一篇:关于静态注册BroadcastReceiver接收不到广播的问题


下一篇:Python3-socket网络知识储备