2016-12-19 3 views
3

Ich bekomme den folgenden Fehler in Django. Reverse für 'password_change_done' mit Argumenten '()' und Schlüsselwortargumenten '{}' nicht gefunden. 0 Muster versucht (s): []. Ich bin mir nicht wirklich sicher, warum ich diesen Fehler bekomme.Reverse für 'password_change_done' mit Argumenten '()' und Schlüsselwortargumente '{}' nicht gefunden. 0 Muster (s) versucht: []

urls.py

from django.conf.urls import url 
from django.contrib.auth import views as auth_views 
from . import views 

urlpatterns = [ 
    url(r'^login/$', auth_views.login, name='login'), 
    url(r'^logout/$', auth_views.logout, name='logout'), 
    url(r'^logout-then-login/$', auth_views.logout_then_login, name="logout_then_login"), 
    url(r'^$', views.dashboard, name='dashboard'), 

    #change password urls 
    url(r'^password-change/$', auth_views.password_change, name='password_change'), 
    url(r'^password-change/done/$', auth_views.password_change_done, name='password_change_done'), 
] 

Traceback: Umwelt:

Request Method: GET 
Request URL: http://127.0.0.1:8000/account/password-change/ 

Django Version: 1.10.4 
Python Version: 3.5.2 
Installed Applications: 
['django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'whitenoise', 
'crispy_forms', 
'business', 
'account'] 
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 "/Users/Tommy/Desktop/django/directory/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner 
    39.    response = get_response(request) 

File "/Users/Tommy/Desktop/django/directory/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "/Users/Tommy/Desktop/django/directory/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "/Users/Tommy/Desktop/django/directory/lib/python3.5/site-packages/django/views/decorators/debug.py" in sensitive_post_parameters_wrapper 
    76.    return view(request, *args, **kwargs) 

File "/Users/Tommy/Desktop/django/directory/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapped_view 
    149.      response = view_func(request, *args, **kwargs) 

File "/Users/Tommy/Desktop/django/directory/lib/python3.5/site-packages/django/contrib/auth/decorators.py" in _wrapped_view 
    23.     return view_func(request, *args, **kwargs) 

File "/Users/Tommy/Desktop/django/directory/lib/python3.5/site-packages/django/contrib/auth/views.py" in inner 
    47.   return func(*args, **kwargs) 

File "/Users/Tommy/Desktop/django/directory/lib/python3.5/site-packages/django/contrib/auth/views.py" in password_change 
    308.   post_change_redirect = reverse('password_change_done') 

File "/Users/Tommy/Desktop/django/directory/lib/python3.5/site-packages/django/urls/base.py" in reverse 
    91.  return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))) 

File "/Users/Tommy/Desktop/django/directory/lib/python3.5/site-packages/django/urls/resolvers.py" in _reverse_with_prefix 
    392.    (lookup_view_s, args, kwargs, len(patterns), patterns) 

Exception Type: NoReverseMatch at /account/password-change/ 
Exception Value: Reverse for 'password_change_done' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

html für Seite I

{% extends "base.html" %} 
{% load crispy_forms_tags %} 

{% block title %}Change Your Password{% endblock %} 

{% block content %} 
<div class="offset-md-3 col-md-6"> 
    <h1>Change Your Password</h1> 
    <p>Use the form below to change your password.</p> 
    <form action="." method="post"> 
     {{form|crispy}} 
     {% csrf_token %} 
    </form> 
</div> 
{% endblock %} 
+0

Ändern Sie den Namen Ihrer URL von 'password_change_done' zu' auth_password_change_done' und diesen Namen vorwärts – karthikr

+0

Karthik Ravindra gehen verwenden - obwohl es ausprobiert nicht dank funktionierte. –

Antwort

2

Da Sie password_change innerhalb Anwendung hinzufügen url.py

url(r'^password-change/$', password_change, {'post_change_redirect': 'account:password_change_done'}, name='password_change'), 
url(r'^password-change/done/$', password_change_done, name='password_change_done'), 

wo account ist ein Namensraum von Anwendungs-URLs: Sie sollten post_change url einschließlich Anwendungsname mit post_change_redirect Argument angeben.

+0

Immer noch nicht das Problem behoben. Danke für deine Hilfe obwohl –

+0

@TomMyers welche Version von Django verwendest du? BTW können Sie auch überprüfen, das Projekt "url.py" Es sollte so etwas wie folgt sein: 'url (r '^ account /', include ('account.urls', namespace = 'account'))'. Fehler immer noch gleich 'Reverse for 'password_change_done''? – neverwalkaloner

+0

Django 1.10 und projekte urls.py url (r '^ account /', include ('account.urls', app_name = 'account', namespace = 'account')), und ja ich erhalte den gleichen umgekehrten Fehler. –

0

Das Problem ist wahrscheinlich zu öffnen versuche, dass Ihre URLs sind Namespace und Sie haben vergessen, den Namespace zu verwenden. Versuchen:

{% url 'account:password_change_done' %} 

oder

reverse('account:password_change_done') 

Denken Sie daran, Ihre Namen Namespace, sonst django möglicherweise nicht in der Lage sein, sie zu finden. Sie können den Namespace finden, die Sie verwenden, indem man (wenn es nicht account ist), wo Sie die URLs für die Anmeldung sind inklusive usw. Es sollte in etwa so aussehen:

url(r'account/', include('account.urls', namespace='account')), 
+0

Ich habe noch keine URLs in meinen Vorlagen festgelegt. Meine Haupt-URLs sind die gleichen, die Sie oben haben und kein Glück –

+0

Es kann nicht Ihre Haupt-URLs-Datei sein, wenn Sie auf die Seite unter "/ account/password_change" zugreifen, wie Ihre Stack-Trace impliziert. – 2ps

Verwandte Themen