python - 子类LoginView时,Django'NoneType'对象没有属性'has_header'
问题描述
我想在 django 上尝试自定义登录,并想在登录前处理一些表单数据。我出去了:
class mylogin(auth_views.LoginView):
def form_valid(self, form):
print("datas :D!", form.cleaned_data['password'])
super().form_valid(form)
所有其他的东西都应该是 LoginView 的东西。所以,在我的 urls.py 我有:
path('login/', views.mylogin.as_view(template_name='public/login.html'), name='login'),
错误,当我尝试登录时:
AttributeError: 'NoneType' object has no attribute 'has_header'
解决方案
如果表单有效,FormMixin.form_valid
[Django-doc]函数应该返回一个HttpResponse
对象。
在这里你调用了这个super().form_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)
您当然也可以决定HttpResponse
在您的form_valid
函数中构造 a ,或者例如在返回响应之前首先“后处理”响应,但无论如何,合同form_valid
应该返回 a HttpResponse
。
推荐阅读
- python - Python 3 如何找到命名为字符串的变量?
- python - Pandas 数据框去除非数字字符
- node.js - ReactJS:如何在本地服务器上部署
- javascript - 贝塞尔曲线数学
- vb.net - 如何从 HTTP GET 组织字符串
- javascript - Promise.all() 基于返回 Promises 的函数
- swift - UIImageView 的移动和跳转动画:Swift 4
- ipv6 - 如何通过 nftables 进行 NETMAP
- json - 来自 Codename One 的 JSON Post 请求
- utf-8 - Firebird UTF-8 数据库与土耳其排序规则