5

我正在尝试使用电子邮件作为用户名,并且几乎可以完美运行。我遵循了这些指示: 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>
4

2 回答 2

4

最后,我通过将它添加到我的顶级初始化来解决这个问题

# 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
于 2011-08-19T02:15:28.037 回答
0

只是为了检查一下,您是否将 django.contrib.auth.models.User 中的用户名字段长度从 30 更改为 75,然后从数据库中删除旧的 auth 表,通过运行 manage.py 获取新的 SQL 以创建 auth 表sqlall,并执行此 SQL 以创建具有更新字段长度的新表?

(由于这只是一个后续问题,我会将其留在评论中,但还没有足够的代表......)

于 2011-07-21T18:35:18.220 回答