POST 方法不从输入字段传递值密码

POST method does not pass the value password from the input field

这里的表单是通过 POST 方法提交的,但是在 type=password 的输入字段中给出的密码没有分配给用户注册 function.When 中给出的 'upassword' 我打印 'upassword' 它给出了一个输出“None”。当我给出 JAVASCRIPT 验证时它也给出了这样的错误。

Internal Server Error: /Salon/Registration/
Traceback (most recent call last):
  File "C:\PYTHON\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\PYTHON\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "D:\Project\salon\user\views.py", line 53, in salonregister
    epassword = sha256(spassword.encode()).hexdigest()
AttributeError: 'NoneType' object has no attribute 'encode'

HTML 文件:

<!DOCTYPE html>
<html lang="en">
{% load static %}
<head>
    <meta charset="UTF-8">
    <title>Registration</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link href="{% static 'styles/style.css' %}" rel="stylesheet"/>
    <script src="jquery-3.5.1.min.js"></script>
</head>
<body>
<section class="sreg" id="sreg">
    <div class="container-fluid">
        <div class="htop">
            <h4>Register Form</h4>
        </div>
        <div class="row">
            <div class="col-12">
                    <form method="POST" name="contact" action="{%url 'salonregister' %}">
                            {%csrf_token%}
                        <div class="form-row">
                            <div class="form-group col-md-6">
                                <label for="fname">First Name</label>
                                <input type="text" class="form-control" id="fname" name="fname" placeholder="First Name">
                                <span id="lfname"></span>
                            </div>
                            <div class="form-group col-md-6">
                                <label for="lname">Last Name</label>
                                <input type="text" class="form-control" id="lname" name="lname" placeholder="Last Name">
                                <span id="llname"></span>
                            </div>
                        </div>
                         <div class="form-group">
                             <label for="email">Email</label>
                             <input type="email" class="form-control" id="email" name="email" placeholder="Email">
                             <span id="lemail"></span>
                         </div>
                        <div class="form-group">
                            <label for="password">Password</label>
                            <input type="password" class="form-control" id="password" name="pass" placeholder="Password">
                            <span id="lpass"></span>
                        </div>
                        <div class="form-group">
                            <label for="cpassword">Confirm Password</label>
                            <input type="password" class="form-control" id="cpassword" name="cpass" placeholder="Confirm Password">
                            <span id="lcpass"></span>
                        </div>
                        <div class="form-group">
                             <label for="mobile">Mobile</label>
                             <input type="text" class="form-control" id="mobile" name="mobile" placeholder="Mobile">
                             <span id="lmob"></span>
                         </div>
                         <div class="form-group">
                             <label for="address">Address</label>
                             <textarea class="form-control" id="address" name="address" rows="3" placeholder="Address"></textarea>
                             <span id="laddress"></span>
                         </div>
                         <center>
                             <button type="submit" class="btn btn-success" onsubmit="return register()">Submit</button>
                         </center>
                    </form>
                 {% for msg in messages %}
                <center>
                    <h4 style="color:red;">{{msg}}</h4>
                </center>
                {% endfor %}
            </div>
        </div>
    </div>
</section>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<script src="{% static 'js/scriptfunction.js' %}"></script>
</body>
</html>

Javascript:

function register()
{
    if(document.contact.fname.value=="")
    {
        document.getElementById("lfname").innerHTML="Enter Your First Name";
        return false;
    }
    else
    {
        var regName = /^[a-zA-Z]+$/;
        if(document.contact.fname.value.match(regName))
             document.getElementById("lfname").innerHTML="";
        else
        {
            document.getElementById("lfname").innerHTML="Inavalid Name";
            return false;
        }
    }
    if(document.contact.lname.value=="")
    {
        document.getElementById("llname").innerHTML="Enter Your Last Name";
        return false;
    }
    else
       {
        var regName = /^[a-zA-Z]+$/;
        if(document.contact.lname.value.match(regName))
             document.getElementById("llname").innerHTML="";
        else
        {
            document.getElementById("llname").innerHTML="Inavalid Name";
            return false;
        }
    }
    if(document.contact.email.value=="")
    {
        document.getElementById("lemail").innerHTML="Enter Email ID";
        return false;
    }
    else
    {
        document.getElementById("lemail").innerHTML="";
        var mailformat = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
        if(document.contact.email.value.match(mailformat))
            document.getElementById("lemail").innerHTML="";
        else
        {
            document.getElementById("lemail").innerHTML="Invalid Email";
            return false;
        }
    }
    if(document.contact.pass.value=="")
    {
        document.getElementById("lpass").innerHTML="Enter Password";
        return false;
    }
    else
    {
        var pregexp=/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
        if(document.contact.pass.value.match(pregexp))
               document.getElementById("lpass").innerHTML="";
        else
        {
               document.getElementById("lpass").innerHTML="Contains eight characters,upper&lowercase letter,digit&special characters";
               return false;
        }
    }
    if(document.contact.cpass.value=="")
    {
        document.getElementById("lcpass").innerHTML="Enter Password";
        return false;
    }
    else
    {
        document.getElementById("lcpass").innerHTML="";
        if(document.contact.pass.value!=document.reg.cpass.value)
       {
            document.getElementById("lcpass").innerHTML="Password Mismatch";
            return false;
       }
       else
            document.getElementById("lcpass").innerHTML="";
    }
    if(document.contact.mobile.value=="")
    {
        document.getElementById("lmob").innerHTML="Enter Your Mobile Number";
        return false;
    }
    else
    {
        var phoneno = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
        if(document.contact.mobile.value.match(phoneno))
            document.getElementById("lmob").innerHTML="";
        else
        {
            document.getElementById("lmob").innerHTML="Invalid Mobile Number";
            return false;
        }
     }
    if(document.contact.address.value=="")
    {
        document.getElementById("laddress").innerHTML="Enter Your Address";
        return false;
    }
    else
        document.getElementById("laddress").innerHTML="";
}

views.py

from django.shortcuts import render,redirect,get_object_or_404
from django.contrib.auth import login,logout
from hashlib import sha256
from user.models import salonlogin,clientlogin,salonreg,clientreg, salondetails,bookingdetails,reviews,contact
from django.contrib import messages

def salonregister(request):
if request.method == 'POST':
    sfname = request.POST.get('fname')
    slname = request.POST.get('lname')
    semail = request.POST.get('email')
    spassword = request.POST.get('password')
    scpassword = request.POST.get('cpassword')
    epassword = sha256(spassword.encode()).hexdigest()
    smobile = request.POST.get('mobile')
    saddress = request.POST.get('address')

    if (salonreg.objects.filter(Email=semail).exists()):
        messages.info(request, "Email ID Already Taken")
        return redirect('salonregister')

    elif (spassword != scpassword):
        messages.info(request, "Password Doesn't Match")
        return redirect('salonregister')

    elif (salonreg.objects.filter(Mobile=smobile).exists()):
        messages.info(request, "Mobile Number Already Taken")
        return redirect('salonregister')

    else:
        sloginobj = salonlogin()
        sloginobj.Username = semail
        sloginobj.Password = epassword
        sloginobj.save()

        ssalondetails = salondetails()
        ssalondetails.Login_id = sloginobj
        ssalondetails.save()

        ssalonreg = salonreg()
        ssalonreg.Login_id = sloginobj
        ssalonreg.First_name = sfname
        ssalonreg.Last_name = slname
        ssalonreg.Email = semail
        ssalonreg.Password = epassword
        ssalonreg.Mobile = smobile
        ssalonreg.Address = saddress
        ssalonreg.save()
        ssalondetail = salonreg.objects.get(Email=semail)
        slid = ssalondetail.id
        fsname = ssalondetail.First_name
        lsname = ssalondetail.Last_name
        request.session["sid"] = slid
        return render(request, "owner.html", {'fsname': fsname , 'lsname': lsname})

else:
    return render(request, "register.html")

urls.py

from django.urls import path,re_path
from . import views

urlpatterns=[
      path('Salon/Registration/', views.salonregister, name="salonregister"),
     ]

您提交的是 passcpass,而不是 passwordcpassword,因此请将其更改为:

    spassword = request.POST.get('pass')
    scpassword = request.POST.get('cpass')

您访问 passwordcpassword 而您为这些字段设置的 name 实际上是 passcpass:

<input type="password" class="form-control" id="password" name="pass" placeholder="Password">

<input type="password" class="form-control" id="cpassword" name="cpass" placeholder="Confirm Password"> ​

如果您更改代码以使用正确的字段名称,它将起作用:

   ​spassword = request.POST.get('pass')
   ​scpassword = request.POST.get('cpass') 

您可能已经通过查看 POST 请求中发送的实际数据发现了这一点,因此我对未来的建议是始终首先在浏览器的开发工具中检查您的请求。