1

Django でパスワードをリセットする際に問題があります。これを見た後:パスワードのリセット、このエラーはまだ存在します....私のエラーは:

Reverse for 'django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments '{'uidb36': '1', 'token': '392-804fab6dcec790f0ec6b'}' not found.

これが私のurls.pyです:

 urlpatterns = patterns('lex.views',
    url(r'^home/forgotpassword', 'lexrequestpassword', name='lexrequestpassword'),
    url(r'^home/resetpassword', 'lexresetpassworddone', name='lexresetpassworddone'),
    url(r'^home/reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'lexresetpasswordconfirmed', name='lexresetpasswordconfirmed'),
    url(r'^home/resetpasswordcompleted', 'lexresetpasswordcompleted', name='lexresetpasswordcompleted'),)

私のviews.py:

@login_required    
def lexrequestpassword(request):
    """
    Reset Password
    """
    path = reverse('lexresetpassworddone')

    return password_reset(request,post_reset_redirect=path)

@login_required    
def lexresetpassworddone(request):
    """
    Reset Password Done
    """
    path = reverse('lexresetpasswordconfirmed')

    return password_reset_done(request,template_name=path)

@login_required    
def lexresetpasswordconfirmed(request):
    """
    Reset Password Confirmed
    """
    path = reverse('lexresetpasswordcompleted')

    return password_reset_confirm(request,post_reset_redirect=path)

@login_required    
def lexresetpasswordcompleted(request):
    """
    Reset Password Completed
    """
    path = reverse('lexmain')

    return password_reset_complete(request,post_reset_redirect=path) 

これを解決する方法がわかりません。いくつかのガイダンスが必要です...

4

4 に答える 4

2

def lexresetpasswordconfirmed(request): よりも uidb36 およびトークン引数も受け入れる必要があります。

于 2012-07-16T10:05:36.973 に答える
1
Reverse for 'django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments '{'uidb36': '1', 'token': '392-804fab6dcec790f0ec6b'}' not found.

これは、実行のある時点で、reverseを呼び出しているのではなくlexresetpasswordconfirmed、で呼び出していることを意味しdjango.contrib.auth.views.password_reset_confirmます。

このエラーはどこで発生していますか?テンプレートでは?もしそうなら、あなたが使用しているテンプレートが持っていることを確認してください

{% url lexresetpasswordconfirmed uid token %}

ではなく

{% url django.contrib.auth.views.password_reset_confirm uid token %}

ビューでエラーが発生していますか?もしそうなら、どこかであなたはリバースを呼んでいdjango.contrib.auth.views.password_reset_confirmます。

そのエラーが解決されたら、はい、Alexanderが指摘した他のエラー、つまりビュー関数にuuidとトークンを含める必要があります。

@login_required    
def lexresetpasswordconfirmed(request, uuid36, token):
    """
    Reset Password Confirmed
    """
    # you need to do SOMETHING with the uuid and token here, RIGHT?!?!
    path = reverse('lexresetpasswordcompleted')

    return password_reset_confirm(request,post_reset_redirect=path)

だから私はあなたがからのビューを使用しているこれらのリターンのそれぞれについて推測していますdjango.contrib.auth、正しいですか?問題は、これらのビューの1つ(おそらくpassword_reset_done)がリダイレクトを提供したことを気にせず、独自のビューを使用していることです。

于 2012-07-16T16:28:19.447 に答える