zoukankan      html  css  js  c++  java
  • 登录

    登录一、
            ----装饰器
            -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('')
  • 相关阅读:
    盘一盘 synchronized (二)—— 偏向锁批量重偏向与批量撤销
    盘一盘 synchronized (一)—— 从打印Java对象头说起
    盘一盘 Thread源码
    盘一盘 System.out.println()
    Java中的单例模式
    Spring AOP SpringBoot集成
    第16周作业
    第15周作业
    迟到的第14周作业
    第13周作业集
  • 原文地址:https://www.cnblogs.com/mengqingjian/p/7810945.html
Copyright © 2011-2022 走看看