导入错误:无法导入名称'password_reset'。

8

我正在尝试在django(2.1.1)中进行密码重置,但是当我导入密码重置时,一直出现以下错误:

ImportError: cannot import name 'password_reset'

这是我的导入:

from django.contrib.auth import (
    authenticate,
    get_user_model,
    login,
    logout,
    password_reset,
    password_reset_done
)

2
视图已在Django-2.1中被移除。 - Willem Van Onsem
1个回答

16

password_reset 视图等函数式视图已被改写为基于类的视图:在 , 请参阅 发行说明PasswordResetView [Django-doc] 类已被指定。虽然这些函数式视图仍然可以使用,但它们已被弃用

开始,这些函数式视图已被删除,请参阅发行说明

You can write it like:

from django.contrib.auth.views import <b>PasswordResetView</b>

from django.urls import path

urlpatterns = [
    path(
        'accounts/password_reset/',
        <b>PasswordResetView.as_view()</b>,
        name='password_reset'
    ),
]
当然,您可能想要更改URL、视图名称并传递参数到as_view以定制PasswordResetView以适应您的特定用例。
请注意,如发行说明中所指定的那样,其他相关视图也已被删除,例如password_changepassword_change_donepassword_reset_donepassword_reset_confirmpassword_reset_complete

谢谢Willem,现在我遇到了以下错误:未找到“password_reset_done”的反向。'password_reset_done'不是有效的视图函数或模式名称。 - Mphoza
@Mphoza:就像最后一段所说的那样,您需要将下面的所有视图更改为CBV对应项。 - Willem Van Onsem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接