【发布时间】:2018-11-23 13:15:57
【问题描述】:
我的项目中包含了 Django allauth 包。我正在尝试使用自定义表单创建重置密码页面的自定义视图。这是我所拥有的:
urls.py
urlpatterns = [
url(r'^password/reset/$', views.ResetPasswordView.as_view(), name='password-reset'),
]
views.py
class ResetPasswordView(PasswordResetView):
template_name = 'account/password-reset.html'
form_class = ResetPasswordForm
forms.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. response = get_response(request)
文件“C:\python3.6.3\lib\site-packages\django\core\handlers\base.py” 在 _get_response 187. response = self.process_exception_by_middleware(e, request)
文件“C:\python3.6.3\lib\site-packages\django\core\handlers\base.py” 在 _get_response 185. response = Wrapped_callback(request, *callback_args, **callback_kwargs)
文件“C:\python3.6.3\lib\site-packages\django\views\generic\base.py” 在视野中 68. return self.dispatch(request, *args, **kwargs)
文件“C:\python3.6.3\lib\site-packages\django\views\generic\base.py” 在调度中 88. return handler(request, *args, **kwargs)
文件“C:\python3.6.3\lib\site-packages\allauth\account\views.py”在 邮政 102. 响应 = self.form_valid(form)
文件“C:\python3.6.3\lib\site-packages\allauth\account\views.py”在 form_valid 639. form.save(self.request)
文件“C:\python3.6.3\lib\site-packages\django\contrib\auth\forms.py” 在保存 269. 对于 self.get_users(email) 中的用户:
文件“C:\python3.6.3\lib\site-packages\django\contrib\auth\forms.py” 在 get_users 254.'is_active':是的,
文件“C:\python3.6.3\lib\site-packages\django\db\models\manager.py”在 manager_method 85. return getattr(self.get_queryset(), name)(*args, **kwargs)
文件“C:\python3.6.3\lib\site-packages\django\db\models\query.py”在 筛选 784. return self._filter_or_exclude(False, *args, **kwargs)
文件“C:\python3.6.3\lib\site-packages\django\db\models\query.py”在 _filter_or_exclude 802. clone.query.add_q(Q(*args, **kwargs))
文件“C:\python3.6.3\lib\site-packages\django\db\models\sql\query.py” 在 add_q 1250. 子句,_ = self._add_q(q_object, self.used_aliases)
文件“C:\python3.6.3\lib\site-packages\django\db\models\sql\query.py” 在_add_q 1276.allow_joins=allow_joins,split_subq=split_subq,
文件“C:\python3.6.3\lib\site-packages\django\db\models\sql\query.py” 在 build_filter 1154. 查找,部分,refed_expression = self.solve_lookup_type(arg)
文件“C:\python3.6.3\lib\site-packages\django\db\models\sql\query.py” 在solve_lookup_type 1034._,字段,_,lookup_parts = self.names_to_path(lookup_splitted,self.get_meta())
文件“C:\python3.6.3\lib\site-packages\django\db\models\sql\query.py” 在 names_to_path 1352. "选择是:%s" % (name, ", ".join(available)))
异常类型:/password/reset/ 处的 FieldError 异常值:不能 将关键字“is_active”解析为字段。选项有:简介、 Profile_id,活动,管理员,date_joined,电子邮件,电子邮件地址, 最爱计数,追随者计数,追随者,追随者计数,ID, last_login, logentry, 密码, points_count, questions_count, 社交账号、员工、目标、用户名
当我从视图中删除 form_class 并使用默认表单时,它可以正常工作。为什么我添加自定义表单时它不起作用?
【问题讨论】:
-
is_active... 你没有在哪里展示过东西 -
@WillemVanOnsem is_active 是 User 模型中用于检查用户是否处于活动状态的方法。
active是用户中的布尔字段。除此之外,我不在任何地方使用 is_active -
您是否通过任何更改将
User模型更改为使用active而不是is_active的模型? -
django-allauth.readthedocs.io/en/latest/configuration.html 滚动到帐户表单标题。本节对您有帮助吗?
标签: python django django-forms django-allauth