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

最後に、これをトップレベルの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
于 2011-08-19T02:15:28.037 に答える
0

確認するために、django.contrib.auth.models.User のユーザー名のフィールド長を 30 から 75 に変更し、データベースから古い認証テーブルを削除し、manage.py を実行して新しい SQL を取得して認証テーブルを作成しましたか? sqlall を実行し、この SQL を実行して、更新されたフィールド長で新しいテーブルを作成しますか?

(これは単なるフォローアップの質問なので、コメントに残しますが、まだ十分な担当者がいません...)

于 2011-07-21T18:35:18.220 に答える