Django 如何修复(字典更新序列元素#0的长度为211;需要2)错误?
我需要当有人注册一个新的帐户添加错误,如果有任何。现在,我试图通过ValidationError引发一个错误,但在我看来它第一次触发了,但当我关闭IDE并再次打开它时,它显示了下一个错误: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_
异常类型: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代码产生的,但当我停止服务器并再次运行时,服务器向我发送了该错误。此外,如果我确实为服务器运行,服务器将运行良好,至少会返回我的页面,没有任何错误,并且不会执行任何操作。当我尝试发送请求时,它会返回我该表单无效,但是,我尝试了您告诉我的内容,错误是相同的