首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyError at /accounts/regist/

KeyError at /accounts/regist/
EN

Stack Overflow用户
提问于 2017-02-16 13:58:02
回答 1查看 905关注 0票数 0

我有个错误:

KeyError在/accounts/regist/‘电子邮件’。

在此之前,我的用户注册表格中只有用户名和密码列。我想给它添加电子邮件表单,所以我写了。但我发现了错误。我进口:

代码语言:javascript
复制
django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.forms import AuthenticationForm.

而且我的auth_user表有电子邮件栏,所以我不知道如何修复它。我用test.py写的

代码语言:javascript
复制
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')

在serializers.py中

代码语言:javascript
复制
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)

在forms.py中

代码语言:javascript
复制
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'

在这些代码中,我指定了电子邮件column.So,我应该做些什么来修复它?

回溯节目

代码语言:javascript
复制
/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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-18 05:23:41

根据部分堆栈跟踪,当试图为电子邮件字段定义小部件时,代码会阻塞。但这个字段是在哪里定义的?在任何地方都没有定义。您的代码应该更改为:

代码语言:javascript
复制
class RegisterForm(UserCreationForm):
    email = forms.EmailField(required = True)
    def __init__(self, *args, **kwargs):
        ....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42276022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档