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,可以在不删除用户的前提下禁止用户登录。
原文地址:https://www.cnblogs.com/TF511/p/10373065.html
时间: 2024-10-24 04:34:13