登录一、 ----装饰器 -Django内置+自定义配置文件 def login(request): """登录""" if request.method=="GET": return render(request,"login.html") else: user=request.POST.get("user") pwd=request.POST.get("pwd") user=models.UserInfo.objects.filter(username=user,password=pwd).first() if not user: return render(request,"login.html",{"msg":"用户名或密码错误"}) # request.session["user_info"]={"id":user.id,"username":user.username} request.session[settings.MQJ]={"id":user.id,"username":user.username} return redirect("/index/") def auth(func): """加密的装饰器""" def inner(request, *args, **kwargs): user_info = request.session.get(settings.MQJ) if not user_info: return redirect("/login/") return func(request, *args, **kwargs) return inner def logout(request): """注销""" try: del request.session[settings.MQJ] except KeyError: pass return redirect('/login/')
用form组件生成的登录:
class LoginForm(Form):
username=fields.CharField(required=True,min_length=3,max_length=15,error_messages={"required":"用户名不能为空","min_length":"用户长度不能小于3","max_length":"用户长度不能大于15"},widget=widgets.TextInput(attrs={"placeholder":"用户名","class":"from-control"}))
password = fields.CharField(required=True, min_length=3, max_length=15,error_messages={"required": "密码不能为空", "min_length": "用户长度不能小于3","max_length": "用户长度不能大于15","invalid":"密码格式错误"},validators=[RegexValidator("\d+","只能是数字")],
widget=widgets.TextInput(attrs={"placeholder":"密码","class":"from-control"}))
def clean_username(self):
user=self.cleaned_data["username"]
is_exsit=models.UserInfo.objects.filter(username=user).count()
if not is_exsit:
raise ValidationError("用户不存在")
return user
def login(request):
"""登录"""
if request.method=="GET":
form=LoginForm()
return render(request,"login.html",{"form":form})
elif request.method=="POST":
form=LoginForm(data=request.POST)
if form.is_valid():
user=models.UserInfo.objects.filter(**form.cleaned_data).first()
if not user:
"""验证成功"""
form.add_error('password',ValidationError('用户或者密码错误'))
return render(request,"login.html",{"form":form})
else:
request.session[settings.MQJ] = {"id": user.id, "username": user.username}
return redirect("/index/")
else:
"""验证失败"""
return render(request,"login.html",{"form":form})
else:
return HttpResponse('滚')