登录一、
----装饰器
-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('滚')