django - 强制 Django 登录表单使用超过 30 个字符的用户名

标签 django django-registration

我正在尝试使用电子邮件作为用户名,并且几乎完美地工作。我按照以下说明操作: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>

最佳答案

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

# 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

关于django - 强制 Django 登录表单使用超过 30 个字符的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780701/

相关文章:

python - pip:升级包而不升级特定依赖

django - request.POST.getlist 在 Django 中返回 None 列表?

django - AM/PM 在 django HTML 模板中不起作用

python - Django Rest框架和Redis

Django、Howto 连接(和范围)facebook 和 django-userena 或类似的

python - 如何在 Django 中使用配置文件注册不同类型的用户?

Django:允许用户在表单字段中提交有效的HTML

django - 捕获模型中已更改的所有字段

django - 使用信号向 django-registration 添加额外的字段

python - django-registration 无法为身份验证电子邮件设置 "from"电子邮件地址