代码之家  ›  专栏  ›  技术社区  ›  user2896120

无法将关键字“is \u active”解析为字段?

  •  0
  • user2896120  · 技术社区  · 6 年前

    我有姜戈 allauth 包含在我的项目中的包。我正在尝试创建一个自定义视图的重置密码页也自定义窗体。以下是我的资料:

    网址.py

    urlpatterns = [
        url(r'^password/reset/$', views.ResetPasswordView.as_view(), name='password-reset'),
    ]
    

    视图.py

    class ResetPasswordView(PasswordResetView):
        template_name = 'account/password-reset.html'
        form_class = ResetPasswordForm
    

    表格.py

    class ResetPasswordForm(PasswordResetForm):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.fields['email'].label = ""
            self.fields['email'].widget = forms.EmailInput(attrs={"placeholder": "Email Address"})
    

    但是,由于某种原因,当我输入电子邮件地址以重置密码时,会出现以下错误:

    回溯:

    文件 “C:\python3.6.3\lib\site packages\django\core\handlers\exception.py” 在内部 41.响应=获取响应(请求)

    文件“c:\python3.6.3\lib\site packages\django\core\handlers\base.py” 在“获取”响应中 187年。response=self.process_exception_by_中间件(e,请求)

    文件“c:\python3.6.3\lib\site packages\django\core\handlers\base.py” 在“获取”响应中 185.response=wrapped_callback(请求,*回调参数,**回调参数)

    文件“c:\python3.6.3\lib\site packages\django\views\generic\base.py” 在视图中 68岁。返回self.dispatch(请求,*args,*kwargs)

    文件“c:\python3.6.3\lib\site packages\django\views\generic\base.py” 正在调度中 88岁。返回处理程序(请求、*args、*kwargs)

    中的文件“c:\python3.6.3\lib\site packages\allauth\account\views.py” 邮递 102.响应=self.form有效(form)

    中的文件“c:\python3.6.3\lib\site packages\allauth\account\views.py” 表格有效 639年。表单保存(self.request)

    文件“c:\python3.6.3\lib\site packages\django\contrib\auth\forms.py” 在保存中 269年。为自己的用户。获取用户(电子邮件):

    文件“c:\python3.6.3\lib\site packages\django\contrib\auth\forms.py” 在GeT用户中 254英寸是“活动”:是,

    中的文件“c:\python3.6.3\lib\site packages\django\db\models\manager.py” 经理法 85岁。返回getattr(self.get_queryset(),name)(*args,**kwargs)

    中的文件“c:\python3.6.3\lib\site packages\django\db\models\query.py” 滤波器 784年。返回self._filter_或_exclude(false,*args,**kwargs)

    中的文件“c:\python3.6.3\lib\site packages\django\db\models\query.py” _过滤器排除 802.clone.query.add_q(q(*args,**kwargs))。

    文件“c:\python3.6.3\lib\site packages\django\db\models\sql\query.py” 添加中\q 1250年。子句,uu=self._add_q(q_object,self.used_aliases)

    文件“c:\python3.6.3\lib\site packages\django\db\models\sql\query.py” 在“添加”中 1276年。allow_joins=allow_joins,split_subq=split_subq,

    文件“c:\python3.6.3\lib\site packages\django\db\models\sql\query.py” 内置过滤器 1154年。lookups,parts,reffed_expression=self.solve_lookup_type(arg)

    文件“c:\python3.6.3\lib\site packages\django\db\models\sql\query.py” 在求解查找类型中 1034年。_,field,u,lookup_parts=self.name_to_path(lookup_splited,self.get_meta())

    文件“c:\python3.6.3\lib\site packages\django\db\models\sql\query.py” 以名称\到\路径 1352年。”选项为:%s“%(name,”,“.join(available)))

    异常类型:fielderror at/password/reset/exception value:cannot 在字段中解析关键字“is \u active”。选择是:配置文件, 配置文件\id,活动,管理,加入日期,电子邮件,电子邮件地址, Favorites_Count、Follower_Count、Followers、Followers、Follower_Count、ID, 最后一次登录、日志条目、密码、点数、问题计数, SocialAccount、Staff、Targets、用户名

    当我从视图中移除Form_类并使用默认表单时,它将正确工作。当我添加自定义表单时,它为什么不起作用?

    1 回复  |  直到 6 年前
        1
  •  0
  •   user2896120    6 年前

    我终于明白了。它产生这种类型错误的原因是因为我从auth继承而不是表单的allauth。

    表格.py

    class ResetPasswordForm(PasswordResetForm):
    

    PasswordResetForm 是来自auth而不是allauth。Allauth的类名称为: ResetPasswordForm 在知道这些之后,我的结果是:

    class PasswordResetForm(ResetPasswordForm):
    

    它现在工作正常,不会给我那个错误。