Ошибка значения: просмотр users.views.logout_user не вернул объект HttpResponse. Вместо этого он вернул None

#python #django

#питон #джанго

Вопрос:

Я создаю приложение для блога на django. Но когда я пишу функцию для выхода пользователей из системы, я получаю эту ошибку обратной трассировки:

 Internal Server Error: /users/logout/
Traceback (most recent call last):
  File "C:UsersDellDesktopDjangoblogvenvlibsite-packagesdjangocorehandlersexception.py", line 47, in inner
    response = get_response(request)
  File "C:UsersDellDesktopDjangoblogvenvlibsite-packagesdjangocorehandlersbase.py", line 186, in _get_response
    self.check_response(response, callback)
  File "C:UsersDellDesktopDjangoblogvenvlibsite-packagesdjangocorehandlersbase.py", line 309, in check_response
    "instead." % name
ValueError: The view users.views.logout_user didn't return an HttpResponse object. It returned None instead.
 

Моя logout_user функция просмотра состоит всего из двух строк, поэтому я, похоже, не могу понять ошибку. Вот моя функция просмотра:

 @login_required
def logout_user(request):
    logout(request)
 

Кто-нибудь может мне помочь?

Комментарии:

1. Вы должны передать любой ответ или страницу перенаправления

2. Вы имеете в виду перенаправление после выхода из системы? Потому что я уже указал LOGOUT_REDIRECT_URL в своем файле настроек

3. Посмотрите, какая у вас ошибка. The view users.views.logout_user didn't return an HttpResponse object. It returned None instead. . Верните любой ответ, затем повторите попытку

4. Да, это работает. Спасибо за помощь!

Ответ №1:

Потому что представление должно возвращать render ответ. Вы должны что-то перенаправить HttpResponseRedirect()

 return HttpResponseRedirect()
 

Чтобы выйти из системы пользователя, который вошел в систему через django.contrib.auth.login() , используйте django.contrib.auth.logout() в вашем представлении. Он принимает HttpRequest объект и не имеет возвращаемого значения.

 from django.contrib.auth import logout

def logout_view(request):
    logout(request)
    # Redirect to a success page.
 

Ответ №2:

У меня была та же проблема, что и у вас, и я исправил ее следующим образом:

 @login_required(login_url='users/login/')
def logout_user(request):
    logout(request)
    return redirect('homepage')
 

где домашняя страница определена в views.py как:

 def homepage(request):
    return render(request, 'main/homepage.html')
 

и импортирован в основной urls.py

 from main.views import homepage

urlpatterns = [
path('', homepage, name='homepage'),
]