首页 > 解决方案 > 如何在 Django 的 views.py 中使用过滤器?

问题描述

我正在使用 Django 构建一个医院管理系统。我想创建多个用户,例如医生、患者和 HR。但是我没有使用django提供的用户认证系统。相反,我试图简单地使用 Html 和引导程序创建注册和登录表单。我正在使用 model.objects.filter() 函数来比较通过表单的输入和数据库的输入。但我得到了想要的结果。这是我在views.py 中的登录功能。

    def login(request):
       if request.method=="POST":
           user = request.POST.get('user', '')
           pass1 = request.POST.get('pass', '')
           val=request.POST.get('val','')
           if(val[0]=='Patient'):
               abc = Patient.objects.filter(username=user,password=pass1)
               n = len(abc)
               if n>0:
                   print("hii")
                   return HttpResponse("<h1>Invalid Credentials</h1>")

               else:
                   return render(request, 'home/p_portal.html')
           else:
               efg =Doctor.objects.filter(username=user, password=pass1)
               if len(efg)==0:
                   return HttpResponse("<h1>Invalid Credentials</h1>")
               else:
                   return render(request, 'home/d_portal.html')



        return render(request, 'home/login.html')

登录表单:

    <form method="post" onsubmit="return validate()" action="/home/login/">{% csrf_token %}
    <div class="form-group">
    <div class="form-check">
       <input class="form-check-input" type="checkbox"  id="s1" value="Patient" name='val'>
       <label class="form-check-label" for="s1">
         Patient
       </label>

    </div>
    <div class="form-check">
        <input class="form-check-input" type="checkbox" id="s2" value="Doctor" name='val'>
        <label class="form-check-label" for="s2">
           Doctor
        </label>
     </div>
     </div>
     <div class="form-group col-md-6">
        <label for="exampleInputEmail1">Username</label>
        <input type="text" class="form-control" id="exampleInputEmail1" name='user'>
        <!--    <small id="emailHelp" class="form-text text-muted">We'll never share your email with 
       anyone else.</small>-->
      </div>
     <div class="form-group col-md-6">
        <label for="exampleInputPassword1">Password</label>
        <input type="password" class="form-control" id="exampleInputPassword1" name="'pass">
     </div>

     <button type="submit" class="btn btn-primary">Login</button>
    </form>

     <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384- 
     DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"> 
     </script>
     <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" 
     integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" 
     crossorigin="anonymous"></script>
     <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" 
     integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" 
     crossorigin="anonymous"></script>
     </body>
     <script type=text/javascript>
       function validate(){
          var s1=document.getElementById("s1");
          var s2=document.getElementById("s2");
          var user=document.getElementById("user");

        if(s1.checked==true && s2.checked==true){
         alert("Select only one");
        return false;
         }
        else if(s1.checked==true){
         alert("hii!"+user.value);
         console.log("Patient");
          return true;}
        else if(s2.checked==true){
          alert("hii!"+user.value);
          console.log("Doctor");
           return true;}
       else{
           alert("nothing selected");
         console.log("nothing");
               return false;}
           }

          </script>

请给我一个方法。

标签: pythondjangodjango-modelsview

解决方案


推荐阅读