繁体   English   中英

django 中 /signup/ “'username'” 处的 MultiValueDictKeyError

[英]MultiValueDictKeyError at /signup/ “'username'” in django

我创建了一个注册页面,它在 django admin 中创建用户,这就是我的 signup.html 的样子

<h1>signup</h1>
<form method="post" action="{% url 'signup' %}">

  username:
  <br/>
  <input type="text" name="username" >
  <br/>
 passwod:

 <br/>

  <input type="password" name="password1" >
  <br/>
confirm passwod:
<br/>

  <input type="password" name="passwod2" >
  <br/>

  <input type="submit"  value="signup">


</form>

这就是我使用我的 url 路由到视图的方式:

from django.conf.urls import url
from django.contrib import admin
import accounts.views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^signup/', accounts.views.signup, name='signup'),

这是我的观点部分:

from django.shortcuts import render
from django.contrib.auth.models import User
from django.template import RequestContext
# Create your views here.
def signup(request):
    if request.method == 'POST':
        User.objects.create_user(request.POST.get('username') , password=request.POST.get('password1')
        return render (request,'accounts/signup.html')

   else:
        return render (request,'accounts/signup.html')

但是当我尝试运行服务器并在提交时输入有关用户名和密码的详细信息时,我收到一个名为 MultiValueDictKeyError 的错误

MultiValueDictKeyError at /signup/

"'username'"

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

"'username'"

Exception Location:     C:\Python35\lib\site-packages\django\utils\datastructures.py in __getitem__, line 85
Python Executable:  C:\Python35\python.exe
Python Version:     3.5.3
Python Path:    

['D:\\python programs\\reddit\\redditclone',
 'C:\\Python35\\python35.zip',
 'C:\\Python35\\DLLs',
 'C:\\Python35\\lib',
 'C:\\Python35',
 'C:\\Python35\\lib\\site-packages',
 'C:\\Python35\\lib\\site-packages\\win32',
 'C:\\Python35\\lib\\site-packages\\win32\\lib',
 'C:\\Python35\\lib\\site-packages\\Pythonwin']

Server time:    Wed, 1 Nov 2017 04:05:10 +0000

任何形式的帮助表示感谢提前感谢

你收到这个错误是因为你没有提到数据库的用户名属性,django 希望将用户名放在用户表的用户名列中

所以用这个

User.objects.create(username=request.POST.get('username') , email=request.POST.get('email'),password=request.POST.get('password1'))

您仅使用用户提供的值。 如果用户没有提供任何值,您必须提供一个默认值。

请求的结构就像... request.POST.get(<key>, <default>)你必须给一个默认值username=request.POST.get("username", "default user")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM