2011-07-21 12 views
5

私はユーザー名に電子メールを使用しようとしています。私はこれらの指示に従いました:http://www.micahcarrick.com/django-email-authentication.htmlユーザー名を30文字以上にするDjangoログインフォーム

問題は、私のログインフォームは依然としてユーザー名が30文字しかないというエラーを投げています。 75文字を受け入れるように入力フォームを変更し、データベーステーブルも変更しました。しかし、Djangoの何かがこれをまだブロックしています。

アイデア?

UPDATE:

<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

@Brenden:正確にあなたが使用している、改版 'Form'には何ですか?フォームクラスを含める**質問**を更新してください。長い入力を切り捨てる 'クリーン'メソッドがありますか? –

+1

チェックするだけで、django.contrib.auth.models.Userのユーザー名フィールドの長さを30から75に変更した後、dbから古いauthテーブルを削除し、新しいSQLを取得してmanageを実行してauthテーブルを作成します。 py sqlallを実行し、このSQLを実行して、更新されたフィールド長を持つ新しいテーブルを作成しますか? –

答えて

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 
0

だけをチェックするには、DBから古い認証テーブルをドロップし、30から75にdjango.contrib.auth.models.Userに、ユーザー名のフィールドの長さを変更でした、新しいSQLをつかんでmanage.py sqlallを実行してauthテーブルを作成し、このSQLを実行して、更新されたフィールド長で新しいテーブルを作成しますか?

(これはちょうどフォローアップの質問ですので、私はコメントでそれを残すだろうが、かなり十分な担当者を持ってい...いない)

+1

私はdjango.contrib.auth.modelsでユーザを30から75に変更していないと思います。実際のdjangoコードに触れることなく、どこでそれを行うのでしょうか? – Brenden

関連する問題