Представление не вернуло объект 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",{})

Такой тип кода также вернет вам ту же ошибку, что и из-за намерений, поскольку оператор return должен быть для 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. когда я установил его первым, если оператор, тогда он сработал - 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