登录

登录一、
        ----装饰器
        -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('')
原文地址:https://www.cnblogs.com/mengqingjian/p/7810945.html