我的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中\站点包\ django的\芯\处理程序\ 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.返回self.dispatch(request,* args,** kwargs)
文件" C:\ python3.6.3 \ lib \ site-packages \ django \ views \ generic \ base.py" 在发货 88.返回处理程序(request,* args,** kwargs)
文件" C:\ python3.6.3 \ lib \ site-packages \ allauth \ account \ views.py"在 岗位 102. response = 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. clause,_ = 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. lookups,parts,reffed_expression = self.solve_lookup_type(arg)
文件" C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py" 在solve_lookup_type中 1034. _,field,_,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" %(名称,"," .join(可用)))
异常类型:/ password / reset / Exception值中的FieldError:不能 解决关键字' is_active'进入田野。选择是:个人资料, Profile_id,active,admin,date_joined,email,emailaddress, favorites_count,follower_count,followers,following_count,id, last_login,logentry,password,points_count,questions_count, socialaccount,员工,目标,用户名
当我从视图中删除form_class并使用默认表单时,它可以正常工作。添加自定义表单时为什么不起作用?
答案 0 :(得分:0)
我终于明白了。它产生这种错误的原因是因为我继承了Auth而不是Allauth的表格。
<强> forms.py 强>
class ResetPasswordForm(PasswordResetForm):
PasswordResetForm
来自Auth而不是Allauth。知道了这个后,Allauth的班级名称被称为ResetPasswordForm
,我的结果是:
class PasswordResetForm(ResetPasswordForm):
它现在正常工作,并没有给我这个错误。