ich einen Fehler bekam:KeyError bei/accounts/regist/
KeyError at /accounts/regist/ 'email'.
Zuvor hatte meinen Benutzeranmeldeformular Benutzername Passwort & Spalte nur. Ich möchte E-Mail-Formular hinzufügen, also habe ich es geschrieben. Aber ich habe den Fehler bekommen. Ich importierte:
django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.forms import AuthenticationForm.
Und meine auth_user Tabelle hat E-Mail-Spalte, so dass ich nicht weiß, wie Sie es beheben. ich in test.py schrieb
from django.test import TestCase
# Create your tests here.
class UserTests(APITestCase):
def setUp(self):
"""
setUp for testing
"""
User.objects.create(username='user1', email='email1', password='user1')
User.objects.create(username='user2', email='email2',password='user2')
self.user1 = User.objects.get(username='user1')
self.user2 = User.objects.get(username='user2')
in serializers.py
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('id', 'username','email', 'password')
write_only_fields = ('password')
read_only_fields = ('id')
def create(self, validated_data):
password = validated_data.get('password')
validated_data['password'] = make_password(password)
return User.objects.create(**validated_data)
in forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.forms import AuthenticationForm
class RegisterForm(UserCreationForm):
def __init__(self, *args, **kwargs):
super(RegisterForm, self).__init__(*args, **kwargs)
self.fields['username'].widget.attrs['class'] = 'form-control'
self.fields['email'].widget.attrs['class'] = 'form-control'
self.fields['password1'].widget.attrs['class'] = 'form-control'
self.fields['password2'].widget.attrs['class'] = 'form-control'
In diesen Codes I der E-Mail-column.So, was soll ich Um es zu reparieren?
Traceback zeigt
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/exception.py in inner
39 response = get_response(request)
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py in _get_response
187 response = self.process_exception_by_middleware(e, request)
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py in _get_response
185 response = wrapped_callback(request, *callback_args, **callback_kwargs)
accounts/views.py in regist
65 form = RegisterForm(request.POST or None)
▶ Local vars
accounts/forms.py in __init__
11 self.fields['email'].widget.attrs['class'] = 'form-control'
▶ Local vars
Sie müssen den tatsächlichen Testfall, die Ansicht und den vollständigen Traceback anzeigen. –
Die [UserCreationForm] (https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.forms.UserCreationForm) hat kein E-Mail-Feld, ich verstehe nicht Was erhoffst du dir, indem du eins hinzufügst? Müssen Sie Djangos überschreiben? – Sayse
@Sayse Thx, ur Kommentare. Ich möchte E-Mail-Authentifizierungssystem hinzufügen. Jetzt hat meine App Benutzername & Passwort-Authentifizierungssystem. – user7523656