该视图未返回HttpResponse对象.它返回了None

ali*_*ind 29 python django django-views

我有以下简单的观点.为什么会导致此错误?

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))
Run Code Online (Sandbox Code Playgroud)

ali*_*ind 63

因为视图必须返回 render,而不仅仅是调用它.将最后一行更改为

return render(request, 'auth_lifecycle/user_profile.html',
           context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)


Rav*_*ina 12

if qs.count()==1:
        print('cart id exists')
        if ....

else:    
        return render(request,"carts/home.html",{})
Run Code Online (Sandbox Code Playgroud)

这种类型的代码也会向您返回相同的错误,这是因为 return 语句应该用于 else 而不是用于 if 语句的意图。

上面的代码可以改成

if qs.count()==1:
        print('cart id exists')
        if ....

else:   

return render(request,"carts/home.html",{})
Run Code Online (Sandbox Code Playgroud)

这可能会解决此类问题


Nav*_*shi 6

我知道在这里发布一些内容已经很晚了,但这可能会帮助某人找出这个愚蠢的错误。

那有可能你return之前就错过了render()。请确保这一点。


Ang*_*ejo 5

我在使用 UpdateView 时遇到了同样的错误

我有这个:

if form.is_valid() and form2.is_valid():
    form.save()
    form2.save()
    return HttpResponseRedirect(self.get_success_url())
Run Code Online (Sandbox Code Playgroud)

我解决了只做:

if form.is_valid() and form2.is_valid():
    form.save()
    form2.save()
    return HttpResponseRedirect(reverse_lazy('adopcion:solicitud_listar'))
Run Code Online (Sandbox Code Playgroud)