我为什么得到__init __()需要1个位置参数但是给出了2个?

Jos*_*phS 3 python django

我正在处理一个项目,我收到以下错误:

追溯:

TypeError at /account/reset-password
__init__() takes 1 positional argument but 2 were given
Run Code Online (Sandbox Code Playgroud)

进口:

from django.conf.urls import url
from . import views
from django.contrib.auth import views as auth_views
from django.contrib.auth.views import PasswordResetView, PasswordResetDoneView
Run Code Online (Sandbox Code Playgroud)

网址:

url(r'^reset-password$', PasswordResetView, name='reset_password'),
Run Code Online (Sandbox Code Playgroud)

我是django的新手,所以欢迎帮助.TY

Wil*_*sem 8

PasswordResetView[Django的DOC]是基于类的视图,您应该指定网址为:

url(r'^reset-password$', PasswordResetView.as_view(), name='reset_password'),
Run Code Online (Sandbox Code Playgroud)

您不希望每次传递到视图时都创建PasswordResetView的,您想要创建HTTP响应.你得到错误的原因是因为现在你将创​​建一个PasswordResetView(所以你将调用类的__init__(..)方法PasswordResetView.视图使用的参数与对象的构造函数之间存在不匹配,因此错误.即使没有不匹配,幸运的是 - 仍然是一个错误,因为结果将是一个PasswordResetView对象,它不是一个子类HttpResponse.