Django По умолчанию Auth Просмотры Url Нет обратного соответствия - PullRequest
0 голосов
/ 07 января 2019

В моем проекте Django в моем urls.py есть следующее:

urlpatterns = [
path('register/', views.register, name='register'), # Registration

path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'), # Login Page
path('logout/', auth_views.LogoutView.as_view(next_page='misc:index'), name='logout'), # Logout Page

path('change_password/', auth_views.PasswordChangeView.as_view(template_name='users/change_password.html', success_url='/'), name='change_password'), # Password Change Page

# Password reset pages; They take a lot of parameters
path('reset_password/', auth_views.PasswordResetView.as_view(
    template_name='users/password_reset/password_reset_request.html', 
    email_template_name='users/password_reset/email_password_reset.html', 
    subject_template_name='users/password_reset/email_password_reset_subject.txt',
    success_url='/reset_password/check_your_email/',
    from_email='password-reset@sn.local',
    html_email_template_name='users/password_reset/email_password_reset.html'
    ), name='password_reset_request'),
path('reset_password/check_your_email/', views.password_reset_check_your_email, name='password_reset_check_your_email'),
path('reset_password/<uidb64>/<slug:token>/', auth_views.PasswordResetConfirmView.as_view(
    template_name='users/password_reset/password_reset_form.html', 
    post_reset_login=True, 
    success_url='/'), name='password_reset_form'),
]

Все URL-адреса работают нормально, кроме последнего, который не дает мне ошибки обратного соответствия.

URL, который я пытаюсь использовать: http://127.0.0.1:8000/reset_password/bAAAAAA/52s-c48e21c49899996ec19c/

Когда я пытаюсь посетить его, он выдает мне эту ошибку:

Reverse for 'password_reset_form' with keyword arguments '{'uidb64': '', 'token': ''}' not found. 1 pattern(s) tried: ['reset_password/(?P<uidb64>[^/]+)/(?P<token>[-a-zA-Z0-9_]+)/$']

Edit:

users/password_reset/password_reset_form.html

{% extends 'base.html' %}

{% block title %}Reset Password{% endblock title %}

{% block content %} 
<form action="{% url 'users:password_reset_form' uidb64=uidb64 token=token %}" method="post">
    {% csrf_token %}
    {{ form.as_p }}

    <button name="submit" class="btn btn-primary">Reset Password</button>
</form>
{% endblock content %}

Я чувствую, что здесь что-то упущено ...

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 07 января 2019

PasswordResetConfirmView не отправляет значения uidb64 или token в контекст шаблона, поэтому они появляются пустыми в этом сообщении об ошибке.

Но они тебе не нужны. Форма просто отправляет обратно на тот же URL, который отображал ее в первую очередь. Так что просто сделайте:

<form action="" method="post">
...