【问题标题】:MultiValueDictKeyError at /signup/signup 处的 MultiValueDictKeyError
【发布时间】:2022-10-06 02:35:45
【问题描述】:

我正在 django 中创建登录页面,但在 /signup 处遇到 MultiValueDictKeyError 问题 下面是views.py \'\'\'

from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.contrib.auth.models import User
from django.contrib import messages


def home(request):
    return render(request, \"authentication/index.html\")


def signup(request):
    if request.method == \"POST\":
        uname = request.POST[\'uname\']
        fname =request.POST[\'fname\']
        lname = request.POST[\'lname\']
        email = request.POST[\'email\']
        pass1 = request.POST[\'pass1\']
        pass2 = request.POST[\'pass2\']

        myuser = User.objects.create_user(uname, email, pass1)
        myuser.first_name = fname
        myuser.last_name = lname

        myuser.save()

        messages.success(request, \"Your account has been successfully created.\")

        return redirect(\'signin\')

    return render(request, \"authentication/signup.html\")


def signin(request):
    return render(request, \"authentication/signin.html\")


def signout(request):
    pass

\'\'\'

下面是signup.html \'\'\'

<!DOCTYPE html>
<html lang=\"en\">
<head>
    <meta charset=\"UTF-8\">
    <title>Database</title>
</head>
<body>

        <h3>Sign Up</h3>
        <form action=\"/signup\" method=\"post\">
            {% csrf_token %}
            <label for=\"\">Username</label>
            <input type=\"text\" id=\"uname\" placeholder=\"Create a username\", Required>
            <br>

            <label for=\"\">First Name</label>
            <input type=\"text\" id=\"fname\" placeholder=\"Enter First Name\", Required>
            <br>

            <label for=\"\">Last Name</label>
            <input type=\"text\" id=\"lname\" placeholder=\"Enter Last name\", Required>
            <br>

            <label for=\"\">Email</label>
            <input type=\"email\" id=\"email\" placeholder=\"Enter Email address\", Required>
            <br>

            <label for=\"\">Password</label>
            <input type=\"password\" id=\"pass1\" placeholder=\"Create a Password\", Required>
            <br>

            <label for=\"\">Confirm your password</label>
            <input type=\"password\" id=\"pass2\" placeholder=\"Confirm your password\", Required>
            <br>

            <button type=\"submit\">Sign Up</button>

        </form>

</body>
</html>

\'\'\'

以下是错误消息

/signup 处的 MultiValueDictKeyError

\"\'uname\"

Request Method:   POST
Request URL:  http://127.0.0.1:8000/signup
Django Version:   3.2.15
Exception Type:   MultiValueDictKeyError
Exception Value:  

\"\'uname\"

Exception Location:   /home/im-lp-1841/PycharmProjects/Database/venv/lib/python3.7/site-packages/django/utils/datastructures.py,

第 78 行,在获取项目Python 可执行文件:/home/im-lp-1841/PycharmProjects/Database/venv/bin/python Python 版本:3.7.12 蟒蛇路径:

[\'/home/im-lp-1841/PycharmProjects/Database\',
 \'/home/im-lp-1841/PycharmProjects/Database\',
 \'/usr/lib/python37.zip\',
 \'/usr/lib/python3.7\',
 \'/usr/lib/python3.7/lib-dynload\',
 \'/home/im-lp-1841/PycharmProjects/Database/venv/lib/python3.7/site-packages\']

Server time:  Fri, 30 Sep 2022 06:31:12 +0000

    标签: python django django-views django-authentication


    【解决方案1】:

    尝试为每个 HTML 输入元素添加一个名称属性。 例子:

    <input type="text" id="uname" name="uname" placeholder="Create a username", Required>
    <input type="text" id="fname" name="fname" placeholder="Enter First Name", Required>
    ...
    ...
    ...
    

    目前的问题是找不到key,打印出request.POST,很可能是空的。

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 2020-11-26
      • 2019-07-09
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多