当我在 django 中包含名字和姓氏时,注册不起作用

问题描述 投票:0回答:1

我首先使用电子邮件、用户名和密码字段创建了注册模板,并且用户能够成功注册,但是当我添加名字、姓氏和电话字段时,每次用户尝试注册时,我都会开始收到 MultiValueDictKeyError...我请求帮助解决这个问题😭😭😭😭

def signup(request):
        if request.method == "POST":
              
              first_name = request.POST['first_name']
              last_name = request.POST['last_name']
              username = request.POST['username']
              email = request.POST['email']
              phone = request.POST['phone']
              password = request.POST['password']
              password2 = request.POST['password2']
              
              if password == password2:
                    
                    if User.objects.filter(username = username).exists():
                          messages.error(request,"Username already exists.")
                          return render(request, 'registration\signup.html')
                    
                    elif User.objects.filter(email = email).exists():
                          messages.error(request,"email already exists.")
                          return render(request, 'registration\signup.html')   
                    else:
                          NewUser = User.objects.create_user(first_name, last_name,username, email, password,phone)
                          NewUser.save()
                          messages.success(request, "Your account has been successfully created you will be redirected to the login page")
                          return redirect('home') 
              
              else:
                    messages.error(request,"Passwords do not match.")
                    return render(request, 'registration\signup.html')
        
        
        return render(request, 'registration\signup.html')

这是表格

  <div class="row ">
            <div class=" form_container col-5 my-1  " style=" height: 500px; border: 2px solid rgb(10, 43, 151); border-radius: 5px;margin-left: 30%;">
                <form class="overlay" action="{% url 'signup' %}" method="post" style="background-color:trasparent;border-radius: 5px;margin-left: 0%;">
                {% csrf_token %}

                <div class="row">
                    <div class="col-md-6">
                      <div class="form-group">
                          <label style="color: aliceblue;" for="fisrt_nam">First Name</label>
                          <input type="text" id="fisrt_nam" class="form-control" name="fisrt_name" placeholder="fisrt name" required>
                      </div>
                    </div>
                    <br>

                    <div class="col-md-6">
                      <div class="form-group">
                          <label style="color: aliceblue;" for="last_nam">Last name</label>
                          <input type="text" id="last_nam" class="form-control" name="last_name" placeholder="Last name" required>
                      </div>
                    </div>
                  </div>
                    
                    
                    <label style="color: aliceblue;" for="name">User name</label>
                    <input type="text" id="username" class="form-control" name="username" placeholder="Enter Your username" required>
                    
                    
                    <div class="row">
                      <div class="col-md-6">
                        <div class="form-group">
                          <label for="email" style="color: aliceblue;">Email</label>
                          <input type="email" id="email" class="form-control" name="email" placeholder="Email address" required>
                        </div>
                      </div>
                      <br>

                      <div class="col-md-6">
                        <div class="form-group">
                          <label for="phone"  style="color: aliceblue;"><small>Format: 123-456-7890</small></label>
                          <input type="tel"  value="0123456789" id="phone" class="form-control" name="phone" maxlength="10" placeholder="Phone number" required>
                        </div>
                      </div>
                    </div>
                    
                    <br>
                    <div class="row">
                          <div class="col-md-6">
                                <div class="form-group">
                                      <input type="password" id="password" name="password" placeholder="Password" required  >
                                      <input type="checkbox" onclick="showpwd()">
                                </div>
                          </div>
      
                          <div class="col-md-6">

                                <div class="form-group">
                                      <input  type="password" id="password2" name="password2" placeholder="Confirm Password" required>
                                      <input type="checkbox" onclick="showpwd2()">
                                </div>

                          </div>
                    </div>    
    
                    <button  type="submit" value="post" style="width: 40%;margin-left: 30%;">Sign Up</button>
                </form>
            </div>
python django post
1个回答
0
投票

请检查模板中的

id
first_nam
last_nam
尝试将值更改为
first_name
last_name

当前代码

<div class="row">
   <div class="col-md-6">
      <div class="form-group">
         <label style="color: aliceblue;" for="fisrt_nam">First Name</label>
         <input type="text" id="fisrt_nam" class="form-control" name="fisrt_name" placeholder="fisrt name" required>
      </div>
   </div>
   <br>

   <div class="col-md-6">
      <div class="form-group">
         <label style="color: aliceblue;" for="last_nam">Last name</label>
         <input type="text" id="last_nam" class="form-control" name="last_name" placeholder="Last name" required>
      </div>
   </div>
</div>

试试这个

<div class="row">
   <div class="col-md-6">
      <div class="form-group">
         <label style="color: aliceblue;" for="fisrt_name">First Name</label>
         <input type="text" id="fisrt_name" class="form-control" name="fisrt_name" placeholder="fisrt name" required>
      </div>
   </div>
   <br>

   <div class="col-md-6">
      <div class="form-group">
         <label style="color: aliceblue;" for="last_name">Last name</label>
         <input type="text" id="last_name" class="form-control" name="last_name" placeholder="Last name" required>
      </div>
   </div>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.