Python Django';非类型';对象没有属性';有#u头';当子类LoginView
我想在django上尝试自定义登录,并想在登录之前处理一些表单数据。我走到这里:Python Django';非类型';对象没有属性';有#u头';当子类LoginView,python,django,django-views,Python,Django,Django Views,我想在django上尝试自定义登录,并想在登录之前处理一些表单数据。我走到这里: class mylogin(auth_views.LoginView): def form_valid(self, form): print("datas :D!", form.cleaned_data['password']) super().form_valid(form) 所有其他内容都应保留在LoginView中。 因此,在my URL.py中,我有: path('
class mylogin(auth_views.LoginView):
def form_valid(self, form):
print("datas :D!", form.cleaned_data['password'])
super().form_valid(form)
所有其他内容都应保留在LoginView中。
因此,在my URL.py中,我有:
path('login/', views.mylogin.as_view(template_name='public/login.html'), name='login'),
错误,当我尝试登录时为:
AttributeError: 'NoneType' object has no attribute 'has_header'
您需要返回调用super的结果
return super().form_valid(form)
如果表单有效,函数应该返回一个HttpResponse
对象
这里调用super().form\u valid(form)
函数,但不返回它生成的HttpResponse
,因此应该添加return
语句:
class mylogin(auth_views.LoginView):
def form_valid(self, form):
print("datas :D!", form.cleaned_data['password'])
return super().form_valid(form)
class mylogin(auth\u views.LoginView):
def表单_有效(自身、表单):
打印(“datas:D!”,form.cleaned_data['password'])
return super().form\u有效(form)
当然,您也可以决定在
form\u valid
函数中构造一个HttpResponse
,或者,例如,在返回响应之前先“后处理”响应,但无论如何,合同是form\u valid
应该返回HttpResponse您应该返回super的结果().form_valid(form)
。感谢您的解释!:)