#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'),
]