gpt4 book ai didi

python - 当子类LoginView时,Django 'NoneType'对象没有属性 'has_header'

转载 作者:行者123 更新时间:2023-12-01 01:31:18 25 4
gpt4 key购买 nike

我想在 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'])
<b>return</b> super().form_valid(form)

您当然也可以决定构建 HttpResponse在你的form_valid函数,或者例如在返回响应之前首先“后处理”响应,但无论如何,契约(Contract)是 form_valid应该返回 HttpResponse .

关于python - 当子类LoginView时,Django 'NoneType'对象没有属性 'has_header',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52834155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com