【问题标题】:Django-rest-auth: Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern nameDjango-rest-auth:找不到“password_reset_confirm”的反向。 'password_reset_confirm' 不是有效的视图函数或模式名称
【发布时间】:2019-04-04 21:28:35
【问题描述】:

我正在尝试使用 django-rest-auth 密码重置功能,但在 /rest-auth/password/reset/ 发出帖子请求后,我收到标题中所述的错误 (Traceback),我不明白为什么。我按照文档页面中的安装过程进行操作。我的urls.py 是:

from django.urls import include, path

urlpatterns = [
    path('users/', include('users.urls')),
    path('rest-auth/', include('rest_auth.urls')),
    path('rest-auth/registration/', include('rest_auth.registration.urls')),

我还在settings.py中添加了所需的应用程序

【问题讨论】:

    标签: django django-rest-framework django-rest-auth


    【解决方案1】:

    我通过添加解决了

    from django.urls import include, path, re_path
    from rest_auth.views import PasswordResetConfirmView
    
    re_path(r'^rest-auth/password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', PasswordResetConfirmView.as_view(),
                name='password_reset_confirm'),
    

    urls.py 中的urlpatterns。这样,您将在邮件中获得一个重置链接,例如:../password/reset/confirm/uid/token。为了完成该过程,您必须使用以下正文向../password/reset/confirm/ 发送 POST 请求:

    {
        "new_password1": "",
        "new_password2": "",
        "uid": "",
        "token": ""
    }
    

    【讨论】:

    • 这开始给我错误"detail": "CSRF Failed: CSRF token missing or incorrect."
    • 我使用的是 jwt 令牌认证系统而不是会话系统
    • 嗨,由于令牌和用户 ID 在电子邮件中,我们如何在我们的应用程序中获取它们
    • 这里的 uid 参数是什么?如果我把收到的邮件放在电子邮件中,它会说 uid 无效。请帮忙
    【解决方案2】:
    from django.views.generic import TemplateView
    
    urlpatterns += [
        path('rest-auth/', include('rest_auth.urls')),
        path('rest-auth/registration/', include('rest_auth.registration.urls')),
    
        url(r'^', include('django.contrib.auth.urls')),
        url(r'^rest-auth/password-reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
            TemplateView.as_view(template_name="password_reset_confirm.html"),
            name='password_reset_confirm'),
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 2019-03-17
      • 2018-01-25
      • 2019-06-27
      • 2020-01-02
      • 2019-04-21
      • 2021-07-18
      相关资源
      最近更新 更多