2017-05-05 10 views
0

내가지고있어 전체 오류 메시지를 '을 (를) 찾을 수 없습니다 · 반전'던지는 것은 : 내가 로그인 절차, 로그 오프를 구현하는 표준 장고 인증 라이브러리를 사용하기 위해 노력하고있어장고 암호 재설정이 'password_reset_done'

Reverse for 'password_reset_done' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

, 비밀번호 재설정 및 기능 /보기를 내 사이트에 가입하십시오.

나는 아나콘다 4.6 패키지를 사용하고 있는데 제가있다하신 (관련) urlpatterns

from django.contrib.auth import views as auth_views 

아래로 장고 라이브러리를 가져 해요 : 나는 이동

url(r'^password_reset/$', auth_views.password_reset, name='password_reset'), 

url(r'^password_reset/done/$', auth_views.password_reset_done, name='password_reset_done'), 

url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', auth_views.password_reset_confirm, name='password_reset_confirm'), 

url(r'^reset/done/$', auth_views.password_reset_complete, name='password_reset_complete'), 

경우 URL

/password_reset/done/

페이지로 연결됩니다.

나는 URL

/password_reset/

에 가면 내가 실패한 역 오류가 발생합니다.

나는 이일에 대한 문서를 읽어 봤는데하지만 난

url(r'^password_reset/done/$', auth_views.password_reset_done, name='password_reset_done'), 

가 장고 역 기능을 차단 이유를 찾을 수있을 것 같지 않습니다. 누구든지 아이디어가 있습니까?

고맙습니다. 자세한 내용은 여기에서도

역 추적 :

프로젝트의 URL :

Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/password_reset/ 

Django Version: 1.10.5 
Python Version: 3.5.2 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
'bootstrap3', 
'app1'] 
Installed Middleware: 
['django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware'] 



Traceback: 

File "E:\Programming\Anaconda3_4.2.0\lib\site-packages\django\core\handlers\exception.py" in inner 
    39.    response = get_response(request) 

File "E:\Programming\Anaconda3_4.2.0\lib\site-packages\django\core\handlers\base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "E:\Programming\Anaconda3_4.2.0\lib\site-packages\django\core\handlers\base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "E:\Programming\Anaconda3_4.2.0\lib\site-packages\django\contrib\auth\views.py" in inner 
    47.   return func(*args, **kwargs) 

File "E:\Programming\Anaconda3_4.2.0\lib\site-packages\django\utils\decorators.py" in _wrapped_view 
    149.      response = view_func(request, *args, **kwargs) 

File "E:\Programming\Anaconda3_4.2.0\lib\site-packages\django\contrib\auth\views.py" in password_reset 
    189.   post_reset_redirect = reverse('password_reset_done') 

File "E:\Programming\Anaconda3_4.2.0\lib\site-packages\django\urls\base.py" in reverse 
    91.  return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))) 

File "E:\Programming\Anaconda3_4.2.0\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix 
    392.    (lookup_view_s, args, kwargs, len(patterns), patterns) 

Exception Type: NoReverseMatch at /password_reset/ 
Exception Value: Reverse for 'password_reset_done' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

가 몇 가지 추가 정보를 원하시면 추가 'APP1 \ 등록 \의 login.html'에 대한

urlpatterns = [ 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^app1/',include('app1.urls')), 
    url(r'^',include('app1.urls')), 
] 

템플릿 코드를하는 올바르게 렌더링됩니다.

{% block title %}Login{% endblock %} 

{% block content %} 
    <h2>Login</h2> 
    <form method="post"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <button type="submit">Login</button> 
    </form> 
{% endblock %} 
오류가 발생합니다 'APP1 \ 등록 \의 password_reset_done.html'에 대한

템플릿 코드 :

{% block content %} 
    <p> 
    We've emailed you instructions for setting your password, if an account exists with the email you entered. 
    You should receive them shortly. 
    </p> 
    <p> 
    If you don't receive an email, please make sure you've entered the address you registered with, 
    and check your spam folder. 
    </p> 
{% endblock %} 
+0

나는 python3.6과 django 1.11과 빈 프로젝트를 사용하고 있는데, urls.py의 정규식은 괜찮습니다. 장고가 렌더링하고있는 템플릿이 문제라고 의심됩니다. 템플릿 디렉토리에서/admin 디렉토리를 제거하려고 했습니까? –

+0

이 모든 URL이 사용되는 템플릿 코드를 공유하십시오. –

+0

오랜 시간 지연 (시간 차이)을 드려 죄송합니다.하지만 위의 추가 정보를 추가했습니다. 템플릿 코드를 검토 중이지만 아직 그다지 많지 않습니다. – user3535074

답변

0

난이 솔루션은 정말 최고입니다 있는지 확실하지 않습니다 만, 사용자 정의 템플릿을 사용하지 않도록 저를 활성화 년대 명시 적으로 myappurls.py의 URL을 패턴에 kwargs로의 워크 플로우를 작성하여 오류를 역 :

from django.contrib.auth import views as auth_views

url(r'^login/$', auth_views.login, {'template_name': 'myapp/registration/login.html'},name='login'), 
url(r'^logout/$', auth_views.logout, {'next_page': 'myapp:home'},name='logout'), 

url(r'^password_reset/$', auth_views.password_reset,{'email_template_name':'myapp/registration/password_reset_email.html', 
                'template_name':'myapp/registration/password_reset_form.html', 
                'subject_template_name':'myapp/registration/password_reset_subject.txt', 
                'post_reset_redirect':'myapp:password_reset_done', 
                'from_email':'[email protected]', 
                },name='password_reset'), 

url(r'^password_reset/done/$', auth_views.password_reset_done, {'template_name': 'myapp/registration/password_reset_done.html'}, name='password_reset_done'), 

url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', auth_views.password_reset_confirm, 
                {'template_name': 'myapp/registration/password_reset_confirm.html', 
                'post_reset_redirect': 'myapp:password_reset_complete'}, 
                name='password_reset_confirm'), 

url(r'^reset/done/$', auth_views.password_reset_complete, {'template_name': 'myapp/registration/password_reset_complete.html'},name='password_reset_complete'), 

업데이트] 답변을!


내가 제공 한 첫 번째 답변에서 내 문제의 해결 방법을 발견했지만 실제로 문제가 무엇인지 이해했습니다.

문제는 내 프로젝트 urls.py와 myapp/urls.py간에 네임 스페이스가 올바르게 구성되지 않았기 때문입니다. 정확하게 내가 응용 프로그램/urls.py를 가리 키도록 프로젝트 urls.py를 변경하는 데 필요한 모든 줄과 그것을 네임 스페이스 이름을 부여하려면 : (R '^'포함 ('myapp와

URL을 .urls '), 이름 ='MyApp를) 나는 되돌리기 방법은 두 가지 연결하는 것이에게 네임 스페이스 이름을 지정하는 데 필요한 응용 프로그램/urls.py에서 다음

:

APP_NAME = 'myapp와를'

의 urlpatterns = URL (r'password_reset/일/'auth_views.password_reset_done 이름 ='password_reset_done ') URL (r'password_reset /'auth_views.password_reset 이름 = 'password_reset') 이 해키 매개 ​​변수의 버킷 부하 없이는 정상적으로, ]

이제 모든 상자 밖으로 완벽하게 작동합니다.