我正在尝试将电子邮件用于用户名,并使其工作得非常完美。我按照这些指示:http://www.micahcarrick.com/django-email-authentication.html
问题是,我的登录表单仍然抛出一个错误,表示用户名只能是30个字符。我已经将输入表单更改为接受75个字符和数据库表。但Django中的某些东西仍在阻止它。
有什么想法吗?
更新:
<form method="post" action="." class="full">
{% csrf_token %}
<ul>
{% if form.non_field_errors %}<li>{{ form.non_field_errors }}</li>{% endif %}
<li>
{{ form.username.errors }}
<label for="id_username">Email/Username</label>
<input type="text" id="id_username" name="username" maxlength="75">
</li>
<li>
{{ form.password.errors }}
<label for="id_password">{{ form.password.label }}</label>
{{ form.password }}
</li>
</ul>
<input type="submit" value="Login">
<a href="{% url django.contrib.auth.views.password_reset %}">Forgot your password?</a>
</form>
答案 0 :(得分:4)
最后,我通过将其添加到我的顶级 init
来解决此问题# Added so the login field can take email addresses longer than 30 characters
from django.contrib.auth.forms import AuthenticationForm
AuthenticationForm.base_fields['username'].max_length = 150
AuthenticationForm.base_fields['username'].widget.attrs['maxlength'] = 150
AuthenticationForm.base_fields['username'].validators[0].limit_value = 150
答案 1 :(得分:0)
为了检查,您是否将django.contrib.auth.models.User中的用户名字段长度从30更改为75,然后从数据库中删除旧的auth表,获取新的SQL以通过运行创建auth表manage.py sqlall,并执行此SQL以创建具有更新字段长度的新表?
(由于这只是一个后续问题,我会留下评论,但还没有足够的代表......)