0

おそらく、Django 1.5の最も興味深い機能はcustom user、古いユーザー名に最終的に別れを告げることです。

ドキュメントには、ユーザー名ではなく電子メールアドレスのみが必要なユーザーを作成するための、すぐに使用できる優れた例があります。

ただし、小さな注意点があります。サインアップに成功した後、何らかの理由で、ここのDjango 1.4で説明されているように機能したため、ユーザーに自動的にログインできません。

言い換えれば、これは私にとってはうまくいきません:

user = authenticate(username=form.cleaned_data['email'], password=form.cleaned_data['password2'])
login(request, user)

奇妙な部分は、デバッグコンソールにエラーメッセージも警告も表示されないことです。

カスタムバックエンドは定義されていませんが、すぐに使用できる例によると。CustomUserとCustomUsermanagerのみ。したがって、ユーザーを手動でログインできない理由がわかりません。

ところで、私も設定で以下を設定しました:

AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)

このあたりにDjango1.5のエキスパートはいますか?

4

2 に答える 2

1

自分で例を実行しただけで、うまくいきました。

syncdbを実行する前にAUTH_USER_MODELを設定しましたか?

そうでない場合は、DBを消去して、コマンドを再実行してください。リンクされた例に基づいて、すべてが正しく構成されているかどうか、スーパーユーザーの作成中に生年月日を尋ねる必要があります。

ちなみに、ModelBackendはデフォルトのAUTHENTICATION_BACKENDSであるため、設定する必要はありません。

于 2013-03-28T13:18:26.340 に答える
0

私はついに解決策を見つけました。内部djangoクラスでデバッグした後。解決策は恥ずかしいほど簡単です。

user = authenticate(username=form.cleaned_data['email'], password=form.cleaned_data['password2'])
login(request, user)

私の間違いは間違った名前空間でしたlogin(request, user)

使用していることを確認してください

from django.contrib.auth import login

そして間違いではありません:

from django.contrib.auth.views import login

他のすべては私の設定で正しかった。

于 2013-03-29T17:49:56.923 に答える