注销时出现 ValueError,注销没有 return HttpResponse 对象

ValueError at logout, logout didn't return an HttpResponse object

使用底部的代码按下注销按钮时出现以下错误-

/logout 处出现 ValueError 视图 app.views.logout 没有 return HttpResponse 对象。它 return 改为 None。 请求方式:GET
请求 URL:http://127.0.0.1:8000/logout

Django 版本:3.0.8

异常类型:ValueError 异常值:
视图 app.views.logout 没有 return HttpResponse 对象。它 return 改为 None。

我的密码是

def logout(request):
    if request.method=="POST":
        auth.logout(request)
        return redirect('login')

我的html是

<li class="nav-item mr-3">
                <form id="logout" method="POST">
                    {% csrf_token %}
                    <input type ="hidden">
                </form>
                <a class="nav-link" href="{% url 'logout'%}" onclick="javacript:document.getElementById('logout').submit()">
                    Logout
                </a>   
            </li>

在你的代码中

def logout(request):
    if request.method=="POST":
        auth.logout(request)
        return redirect('login')

不需要显式 redirect,因为 auth.logout 可以在注销后处理重定向。只需在 settings.py

中设置 LOGOUT_REDIRECT_URL = "my_url"

或者,如果您使用的是 Django 2.2.x 或更高版本,也可以在 urls.py 中实现相同的效果,在 urls.py import

from django.contrib.auth.views import LogoutView

然后在 urlpatterns 中添加以下路径,

path('logout/', LogoutView.as_view(next_page=settings.LOGOUT_REDIRECT_URL), name='logout'),

那么您的 views.py

中不需要任何代码