MultiValueDictKeyError at /users/signup/ "password_1"



我正在学习django,同时创建用户。我在/users/signup/";"密码_ 1";,请帮我

views.py,最后定义的函数,位于passwords1。这是它指向错误的地方。

from django.shortcuts import render
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
from django.http import HttpResponseRedirect
from django.urls import reverse
# Create your views here.

def userslogin(request):
if request.method == "POST":
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return HttpResponseRedirect(reverse("index"))
else:
return render(request, "users/login.html", {
"message": "Invalid credentials."
})
else:
return render(request, "users/login.html")
def userlogout(request):
logout(request)
return render(request, 'users/logout.html',{
"message": "Succesfully logged out."
})
def usersignup(request):
if request.method == "POST":
username = request.POST["username"]
email = request.POST["email"]
password_1 = request.POST["password_1"]
password_2 = request.POST["password_2"]
myuser = User.objects.create_superuser(username = username,password = password_1, email=email)
if myuser is not None:            
myuser.save() 
return HttpResponseRedirect(reverse("main"))
else:
return render(request, "users/login.html", {
"message": "Invalid credentials."
})


else:

return render(request, "users/signup.html")

urls.py这里没有错,但是,我仍然包含了这个文件

from django.urls import path, include
from . import views
import blog

urlpatterns = [
path("", blog.views.main, name="index"),
path('login/',views.userslogin, name = 'login'),
path('logout/',views.userlogout, name = 'logout'),
path('signup/',views.usersignup, name = 'signup'),

]

signup.html

{% extends 'users/layout.html' %}
{% block body %}
<h1>Physics Blog</h1>
{% if message %}
<div>{{ message }}</div>
{% endif %}

<form  action= "{% url 'signup' %}" method="post">
{% csrf_token %}
<input type="text" placeholder="username" name = "username" id="username">
<input type="email" placeholder="email" name = "email" id="email">
<input type="password" placeholder="password 1">
<input type="password" placeholder="password 2">
<input type="submit">
</form>

{% endblock %}

您需要指定input小部件的名称,以便request.POST[]可以通过input小部件名称捕获值。在输入小部件中添加name=password_1, name=password_2

<form action="{% url 'signup' %}" method="post">
{% csrf_token %}
<input type="text" placeholder="username" name = "username" id="username">
<input type="email" placeholder="email" name = "email" id="email">
<input type="password"name="password_1"placeholder="password 1">
<input type="password"name="password_2"placeholder="password 2">
<input type="submit">
</form>

最新更新