我首先使用电子邮件、用户名和密码字段创建了注册模板,并且用户能够成功注册,但是当我添加名字、姓氏和电话字段时,每次用户尝试注册时,我都会开始收到 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>
请检查模板中的
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>