0

ich eine Anmeldeseite erstellt, die Admin-Benutzer in django schafft dies ist, wie mein signup.html gleichMultiValueDictKeyError bei/Anmeldungen/„‚username‘“ in django

<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> 

sieht, und das ist, wie ich mit geroutet meine uRL Ansichten:

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'), 

und hier ist meine Ansichten Abschnitt:

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') 

aber wenn Ich habe versucht, den Server und geben Sie diese Details in Bezug auf Benutzername und Passwort beim Senden iam immer einen Fehler genannt 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 

jede Art von Hilfe laufen geschätzt wird Dank im Voraus

Antwort

1

Sie bekommen diese Fehler, weil Sie haben das Attribut Username für die Datenbank genannt, die django erwartet zu erhalten den Benutzernamen in der Benutzerspalte der Benutzertabelle zu setzen

so verwenden diese

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

Sir ich habe getan, was du mir gesagt hast, aber nachdem ich diese Zeile hinzugefügt habe, bekomme ich einen anderen Fehler als return render (Anfrage, 'accounts/signup.html') ^ SyntaxError: Ungültige Syntax, die in Zeile7 von meine views.py –

+0

müssen Sie die Klammer in der vorherigen Zeile, nach der Passwort-Sache schließen, wird meine ans bearbeiten – Exprator

+0

@Exprator müssen wir username = request.POST.get ('Benutzername') angeben, weil create_user Benutzername akzeptiert Als erstes Argument, E-Mail als zweites und Passwort als drittes. Also User.objects.create_user (request.POST.get ('username'), password = request.POST.get ('password1') genug? –