web-dev-qa-db-fra.com

La vue n'a pas renvoyé d'objet HttpResponse. Il a retourné None à la place

J'ai la vue simple suivante. Pourquoi cela entraîne-t-il cette erreur?

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

Parce que la vue doit retournerrender, pas seulement l'appeler. Changer la dernière ligne en

return render(request, 'auth_lifecycle/user_profile.html',
           context_instance=RequestContext(request))
60
aliteralmind
if qs.count()==1:
        print('cart id exists')
        if ....

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

Ce type de code vous renverra également la même erreur en raison d'intentions, car l'instruction de retour devrait être pour sinon pas pour l'instruction if.

le code ci-dessus peut être changé en

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

else:   

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

Cela peut résoudre de tels problèmes

2

J'ai eu la même erreur en utilisant un UpdateView

J'ai eu ceci:

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

et j'ai résolu juste de faire:

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