问题描述
/ pout处的
ValueError
视图app.views.logout没有返回HttpResponse对象。它返回None。
请求方法: GET
请求网址:http://127.0.0.1:8000/logout
Django版本:3.0.8
异常类型:ValueError
异常值:
视图app.views.logout没有返回HttpResponse对象。而是返回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
中实现同样的效果
from django.contrib.auth.views import LogoutView
然后在urlpatterns中添加以下路径,
path('logout/',LogoutView.as_view(next_page=settings.LOGOUT_REDIRECT_URL),name='logout'),
然后,您的视图中就不需要任何代码。py