Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 2.1密码重置视图404_Django_Django Forms_Django Templates_Django Views - Fatal编程技术网

Django 2.1密码重置视图404

Django 2.1密码重置视图404,django,django-forms,django-templates,django-views,Django,Django Forms,Django Templates,Django Views,我正在尝试将用户密码重置功能集成到我的自定义用户模型中。当我试图访问URL时,我得到一个404错误 我尝试访问的URL: My URL.py: from django.urls import path from django.urls import reverse_lazy from django.contrib.auth.views import PasswordResetView from . import views app_name = 'accounts' urlpatterns

我正在尝试将用户密码重置功能集成到我的自定义用户模型中。当我试图访问URL时,我得到一个404错误

我尝试访问的URL:

My URL.py:

from django.urls import path
from django.urls import reverse_lazy
from django.contrib.auth.views import PasswordResetView
from . import views

app_name = 'accounts'
urlpatterns = [
    path('signup/', views.SignUpView.as_view(), name='signup'),
    path('login/', views.LoginView.as_view(), name='login'),
    path('logout/', views.LogOutView.as_view(), name='logout'),
    path('password-change/', views.PasswordChangeView.as_view(),
         name='password-change'),
    path('password-reset/', views.PasswordResetView.as_view(),
         name='password-reset'),
    path('password-reset-done/', views.PasswordResetDoneView.as_view(),
         name='password-reset-done'),
    path('reset/<uuid:uidb64>/<slug:token>/',
         views.PasswordResetConfirmView.as_view(),
         name='password_reset_confirm'),
]
发送重置链接的功能正在工作。我在控制台中收到电子邮件,之前显示的链接正在打印

在我的模板文件中,我已经做了一个丑陋的黑客

{% load i18n %}{% autoescape off %}
    {% blocktrans %}You're receiving this email because you requested a password reset for your user account at
        {{ site_name }}.{% endblocktrans %}

    {% trans "Please go to the following page and choose a new password:" %}
    {% block reset_link %}
        {{ protocol }}://{{ domain }}/reset/{{ uid }}/{{ token }}/
    {% endblock %}
    {% trans "Your login email, in case you've forgotten, is same this email address:" %} {{ user.get_username }}

    {% trans "Thanks for using our site!" %}

    {% blocktrans %}The {{ site_name }} team{% endblocktrans %}

{% endautoescape %}
从那时起,我必须对URL进行硬处理

{{ protocol }}://{{ domain }}{% url 'accounts:password-reset-confirm' uidb64=uid token=token %}
根本不起作用,还给了我一个错误。也许有人能向我解释我做错了什么。现在正在努力解决这个问题。

你已经

path('reset/<uuid:uidb64>/<slug:token>/',
     views.PasswordResetConfirmView.as_view(),
     name='password_reset_confirm'),

您的重置路径需要一个uuid,然后是一个slug,您正在为uuid传递MQ。MQ在我看来不像uuid我没有将uuid生成为MQ,但Alasdair的解决方案工作得很好
path('reset/<uuid:uidb64>/<slug:token>/',
     views.PasswordResetConfirmView.as_view(),
     name='password_reset_confirm'),
path('reset/<uidb64>/<token>/', views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),