我有下面的简单视图。为什么会导致这个错误?The view auth_lifecycle.views.user_profile didn't return an HttpResponse object. It returned None instead.
"""Renders web pages for the user-authentication-lifecycle project."""
from django.shortcuts import render
from django.template import RequestContext
from django.contrib.auth import authenticate, login
def user_profile(request):
"""Displays information unique to the logged-in user."""
user = authenticate(username='superuserusername', password='sueruserpassword')
login(request, user)
render(request, 'auth_lifecycle/user_profile.html',
context_instance=RequestContext(request))
7条答案
按热度按时间hk8txs481#
因为视图必须返回
render
,而不仅仅是调用它。(注意,render
是HttpResponse
的简单 Package 器)。(Also注意
render(...)
函数在后台返回一个HttpResponse
对象。)wlzqhblo2#
这种类型的代码也会返回相同的错误,这是因为return语句应该是else语句,而不是if语句。
以上代码可以更改为
这样可以解决这些问题
nhhxz33t3#
我 在 使用 UpdateView 时 遇到 了 同样 的 错误
我 有 这个 :
中 的 每 一 个
我 解决 了 这个 问题 :
格式
bvjxkvbb4#
我知道这是很晚才张贴的东西在这里,但这可能有助于有人找出愚蠢的错误。
有可能你在
render()
之前错过了return
。请确保这一点。rks48beu5#
Python对缩进非常敏感,用下面的代码我得到了同样的错误:
正确的缩进为:
mwyxok5s6#
我有同样的问题,但通过在保存数据后返回渲染解决了它。
问题:保存数据后,如果没有任何error_message可显示,但保存后没有返回任何内容。
解决方法添加后错误已解决
在代码中...
pqwbnv8z7#
在Django中,每个视图都必须返回一个**
HttpResponse
(或者它的子类)。但是,我们通常在渲染Django中的模板时使用render(...)
函数。如果我们使用render(...)
函数,我们不会遇到任何错误,因为render(...)
在内部返回一个HttpResponse
。对于这个特定的例子,您缺少一个*
return
语句,因此视图确实返回了None
***,这导致了异常。因此,添加
return
语句将解决此问题,如下所示故障排除
许多人面临这个问题;它们的代码/逻辑可能不同,但原因是相同的。下面是一些可能有助于您排除故障的情况,
1.您是否遗漏了添加
return
语句?1.您确定返回的对象是
HttpResponse
还是它的子类?有些人可能会直接从视图返回模型对象或表单对象1.是否所有的
if...else
子句都正确地返回HttpResponse
?(在下面的示例中,不清楚应该返回什么,a.在
form.is_valid()
为False
的情况下B.如果
form.is_valid()
是True
(在form.save()
之后)