Изгледът не върна обект HttpResponse. Вместо това върна None

Имам следния прост изглед. Защо води до тази грешка?

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))

person aliteralmind    schedule 08.10.2014    source източник


Отговори (4)


Тъй като изгледът трябва да върне render, а не просто да го извика. Променете последния ред на

return render(request, 'auth_lifecycle/user_profile.html',
           context_instance=RequestContext(request))
person Community    schedule 08.10.2014

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

else:    
        return render(request,"carts/home.html",{})

Такъв тип код също ще ви върне същата грешка, това се дължи на намеренията, тъй като операторът за връщане трябва да бъде за else, а не за оператор if.

горният код може да бъде променен на

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

else:   

return render(request,"carts/home.html",{})

Това може да реши подобни проблеми

person Ravi Teja Mureboina    schedule 01.07.2018
comment
какво предполагате, че 2 кодови фрагмента са еднакви - person Muhammad Omer Aslam; 01.07.2018
comment
изправих се пред същата грешка, спомената във въпроса, но получих поради намеренията, тъй като в първия код операторът за връщане е за втория оператор if, но не и за първия, това е причината, поради която получих, че изгледът не върна HttpResponse обект. Вместо това върна None. когато го зададох на първо изявление if, тогава работи - person Ravi Teja Mureboina; 01.07.2018
comment
@MuhammadOmerAslam: Python е чувствителен към кодови вдлъбнатини. поради отстъпа на кода в първата версия, return .. render() се извиква само в else... частта на if ..else. Във втората версия няма отстъп и така return render()... винаги се изпълнява. - person Andy Clifton; 09.05.2020

Имах същата грешка при използване на UpdateView

Имах това:

if form.is_valid() and form2.is_valid():
    form.save()
    form2.save()
    return HttpResponseRedirect(self.get_success_url())

и реших просто като направих:

if form.is_valid() and form2.is_valid():
    form.save()
    form2.save()
    return HttpResponseRedirect(reverse_lazy('adopcion:solicitud_listar'))
person Angie Alejo    schedule 10.06.2016

Python е много чувствителен към отстъпи, с кода по-долу получих същата грешка:

    except IntegrityError as e:
        if 'unique constraint' in e.args:
            return render(request, "calender.html")

Правилният отстъп е:

    except IntegrityError as e:
        if 'unique constraint' in e.args:
        return render(request, "calender.html")
person Ibby    schedule 10.12.2020