Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何修复(字典更新序列元素#0的长度为211;需要2)错误?_Django_Django Forms_Django Class Based Views_Django Errors - Fatal编程技术网

Django 如何修复(字典更新序列元素#0的长度为211;需要2)错误?

Django 如何修复(字典更新序列元素#0的长度为211;需要2)错误?,django,django-forms,django-class-based-views,django-errors,Django,Django Forms,Django Class Based Views,Django Errors,我需要当有人注册一个新的帐户添加错误,如果有任何。现在,我试图通过ValidationError引发一个错误,但在我看来它第一次触发了,但当我关闭IDE并再次打开它时,它显示了下一个错误: 异常类型:ValueError 异常值:字典更新序列元素#0的长度为211;2是必需的 我不知道到底发生了什么事?为什么在我关闭IDE之前,这个错误没有出现,却出现了呢 views.py # User registration class Register(CreateView): template_

我需要当有人注册一个新的帐户添加错误,如果有任何。现在,我试图通过ValidationError引发一个错误,但在我看来它第一次触发了,但当我关闭IDE并再次打开它时,它显示了下一个错误:
异常类型:ValueError
异常值:字典更新序列元素#0的长度为211;2是必需的

我不知道到底发生了什么事?为什么在我关闭IDE之前,这个错误没有出现,却出现了呢

views.py

# User registration
class Register(CreateView):
    template_name = 'account/register.html'
    form_class = SignUp
    success_url = reverse_lazy('account:login')
forms.py

# UserCreationForm
class SignUp(UserCreationForm):
    email = forms.EmailField(required=True)
    first_name = forms.CharField(required=True)
    last_name = forms.CharField(required=True)

    class Meta:
        model = User
        fields = ['username',
                  'first_name',
                  'last_name',
                  'password1',
                  'password2',
                  'email']

    def clean_username(self):
        data = self.cleaned_data['username']
        if User.objects.filter(username=data).exists():
            raise ValidationError('username is already exists')
        return data

    def clean_email(self):
        data = self.cleaned_data['email']
        if User.objects.filter(email=data).exists():
            raise ValidationError('email is already exists')
        return data
register.html

                    <form method="post">
                    {% csrf_token %}
                        <div class="form-group">
                            <div class="right-inner-addon">
                            {% for field in form %}
                                {% if form.errors %}
                                    {% for error in field.errors %}
                                    <div class="text-danger">
                                        <strong>{{ error }}</strong>
                                    </div>
                                    {% endfor %}
                                {% endif %}
                            {{ field }}
                            {% endfor %}
                            </div>
                        </div>
                    <hr>
                        <div class="tab-content">
                            <div class="tab-pane fade in active text-center" id="pp">
                                <button type="submit" class="btn btn-primary btn-lg btn-block"><i class="fa fa-plus"></i> Create Account</button>
                            </div>
                        </div>
                    </form>

{%csrf_令牌%}
{%形式的字段为%}
{%if form.errors%}
{%字段中有错误。错误%}
{{error}}
{%endfor%}
{%endif%}
{{field}}
{%endfor%}

创建帐户
{{form}不是循环使用的词典列表;这是一个字典字典,其中每个键表示字段,每个字段是一个字典,其中的键名为errors,这将是错误列表。
因此,您需要知道将显示的字段的名称,并根据您显示的错误,例如:

<input name="old_password" type="password" class="form-control" id="id_old_password">
            {% for error in form.old_password.errors %}
                <p style="color:red">{{ error }}</p>
            {% endfor %}

{%for form.old_password.errors%}

{{error}

{%endfor%}

注意这里:为了使您的字段能够向CBV发送请求(如您的情况),并使CBV能够处理POST&GET请求而不会出现任何问题,您需要提供id=“id\u field name”name=“field name”{form}不是要循环浏览的词典列表;这是一个字典字典,其中每个键表示字段,每个字段是一个字典,其中的键名为errors,这将是错误列表。
因此,您需要知道将显示的字段的名称,并根据您显示的错误,例如:

<input name="old_password" type="password" class="form-control" id="id_old_password">
            {% for error in form.old_password.errors %}
                <p style="color:red">{{ error }}</p>
            {% endfor %}

{%for form.old_password.errors%}

{{error}

{%endfor%}

此处注意:为了使您的字段能够向CBV发送请求(如您的情况),并使CBV能够处理POST&GET请求,而不会出现任何问题,您需要提供id=“id\u字段名”name=“字段名”

此处的错误不是因为Html而引起的。根据Html代码,该错误运行良好,但当我停止服务器并再次运行时,服务器向我发送了该错误。此外,如果我确实为服务器运行,服务器将运行良好,至少会返回我的页面,没有任何错误,并且不会执行任何提升操作,当我尝试发送请求时,它会返回我该表单无效,我尝试了你告诉我的,错误是一样的。这里的错误不是因为Html而产生的。错误是由Html代码产生的,但当我停止服务器并再次运行时,服务器向我发送了该错误。此外,如果我确实为服务器运行,服务器将运行良好,至少会返回我的页面,没有任何错误,并且不会执行任何操作。当我尝试发送请求时,它会返回我该表单无效,但是,我尝试了您告诉我的内容,错误是相同的