0

この登録ビューで認証が機能しない理由がわかりません。ユーザーがデータベースに入力され、次の目的のページ (login_required デコレータがある) にリダイレクトされているため、ログイン ページにリダイレクトされます。認証は、指定された値を使用してシェルで新しいユーザーを返します。ここにもデバッグして貼り付けました: http://dpaste.org/J1HZ5 / What's going wrong?

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            new_user = authenticate(username = request.POST['username'],
                                    password = request.POST['password1'])

            login(request, new_user)
            context = RequestContext(request)    
            context['user_id'] = new_user.id
            context['new_user'] = new_user
            url = '/user/%s/' % new_user.id
            return HttpResponseRedirect(url)
    else:
        form = UserCreationForm()
    return render_to_response("registration/register.html", {'form': form},
                              context_instance=RequestContext(request))

urls.py:

urlpatterns = patterns('',
    # Examples:
    url(r'^$', 'crewcal.views.index', name='home'),
    # url(r'^ssc/', include('ssc.foo.urls')),

    url(r'^events/(?P<event_id>\d+)/$', 'crewcal.views.event'),
    url(r'^events/new/$', 'crewcal.views.new_event', name='new_event'),
    url(r'^commit/$', 'crewcal.views.commit'),
    url(r'^user/(?P<user_id>\d+)/$', user, name='user'),
    url(r'^users/$', 'crewcal.views.users'),

    url(r'^register/$', register, name='join'),
    url(r'^login/$', 'django.contrib.auth.views.login'),
    url(r'^logout/$', logout, {'next_page': '/'}, name='logout'),
    url(r'^log_in/$', log_in, name='log_in'),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
)

ありがとう

4

4 に答える 4

0

あなたの問題はこの行にあります:

url(r'^user/(?P<user_id>\d+)/$', user, name='user'),

userが有効なビューであることを確認してください。

于 2012-09-14T05:26:01.380 に答える
0

django セッション ミドルウェアをインストールしましたか?

于 2012-09-13T21:45:20.380 に答える
0

UserCreationForm コードを投稿したいかもしれませんが、authenticate(...)呼び出しを実行しているが、実際にはその結果を確認してからリダイレクトしていないことに気付きました。Django ソースを見ると、組み込みの認証フォーム ( ) があり、呼び出しが none でないdjango.contrib.forms.AuthenticationForm場合の結果と、ユーザーがアクティブであること、そうでない場合はフォーム エラーが発生することを検証します。authenticate()

于 2012-09-13T21:46:33.063 に答える