No reverse match , как сделать редирект?
получаю ошибку Reverse for 'password_change_done' not found. При попытке сменить пароль , после отправки формы смены пароля , я думаю не происходит редирект , подскажите как это сделать , пытался добавить post_change_redirect в url но не сработало .
urls
from django.urls import path
from django.contrib.auth import views as auth_views
from . import views
app_name = 'account'
urlpatterns = [
path('dashboard/', views.dashboard, name='dashboard'),
path('login/', auth_views.LoginView.as_view(), name="login"),
path('logout/', auth_views.LogoutView.as_view(), name="logout"),
path('change_password/', auth_views.PasswordChangeView.as_view(),
{'post_change_redirect': 'account:password_change_done'}, name='change_password'),
path('change_password/done/', auth_views.PasswordChangeDoneView.as_view(), name='change_password_done'),
]
password_change_form.html
{% extends 'base.html' %}
{% block title %}Change your password{% endblock %}
{% block content %}
<h1>Chane your password</h1>
<p>Use the form below to change password.</p>
<form action="." method="post">
{{form.as_p}}
<p><input type="submit" value="Change"></p>
{% csrf_token %}
</form>
{% endblock %}
password_change_done
{% extends 'base.html' %}
{% block title %}Password changed{% endblock %}
{% block content %}
<h1>Password changed</h1>
<p>Your password has been successfully changed.</p>
{% endblock %}
base.html
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %}</title>
<link href="{% static 'css/base.css' %}" rel="stylesheet">
<script src="https://kit.fontawesome.com/e6a4fc9da2.js" crossorigin="anonymous"></script>
</head>
<body>
<div id="header">
<span class="logo">Th<i class="far fa-times-circle"></i>nysocial</span>
{% if request.user.is_authenticated %}
<ul class="menu">
<li {% if section == "dashboard" %} class="selected"{% endif %}>
<a href="{% url 'account:dashboard' %}">My dashboard</a>
</li>
<li {% if section == "images" %} class="selected"{% endif %}>
<a href="#">Images</a>
</li>
<li {% if section == "people" %} class="selected"{% endif %}>
<a href="#">People</a>
</li>
<li {% if section == "news" %} class="selected"{% endif %}>
<a href="#">News</a>
</li>
</ul>
{% endif %}
<span class="user">
{% if request.user.is_authenticated %}
Hello {{ request.user.first_name }},
<a href="{% url 'account:logout' %}">Logout</a>
{% else %}
<a href="{% url 'account:login' %}">Log-in</a>
{% endif %}
</span>
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
Ответы (1 шт):
Автор решения: Whatis
→ Ссылка
Если у кого-то будет подобная ошибка , импоритруйте reverse_lazy и передавайте явно пространство имен в аргументах . path('password-change/', auth_views.PasswordChangeView.as_view(success_url=reverse_lazy('account:password_change_done')), name='password_change'),