Django的注销方法不起作用



这是我的第一个django项目login/out。在登录时,用户成功地重定向到他的仪表板,但是当我单击注销时,什么也没有发生。我该如何解决这个问题?

视图:

def logout(request):
#logout(request)
if request.method == 'POST':
auth.logout(request)
messages.success(request, 'You are now logged out')
return redirect('login')
html:

{% if user.is_authenticated %}
<div id = 'dashboard' class="the-dashboard">
<div class="prof">
<p ><span class = 'fntmk'>Welcome</span> {{ user.username }}</p>
<img src = "{% static 'images/profile-trans.jpg' %}">
</div>
<div class="the-panel">
<form action  = "{% url 'logout' %}" method = "POST">
{% csrf_token %}
<a class = 'fntmk'><i class="far fa-user-circle size"></i>&nbsp;&nbsp;&nbsp;Profil</a>
<a href="{% url 'logout' %}" class = 'logout fntmk prob' alt='exit'><span class="material-icons">logout</span><span class = 'odjavi'>Logout</span></a>
</div></form>
</div>
{% else %}
<div class="the-login">
<form action = "{% url 'login' %}" method = "POST">
{% csrf_token %}
<input type = 'text' id = 'username' class = 'username-field' placeholder = 'username' required>
<input type = 'password' id = 'password' placeholder = 'password' required>
<a href= "{% url 'login' %}"> <button class = 'btn-login'>Login</button></a>
</form>
<a href = "{% url 'register' %}" class = 'register fntmk'>New User?</a>
</div>
{% endif %}

urls>

path('register/',register, name = 'register'),
path('accounts/dashboard/',login, name = 'login'),
path('',logout, name = 'logout'),

问题在这一行:

<a href="{% url 'logout' %}" class = 'logout fntmk prob' alt='exit'><span class="material-icons">logout</span><span class = 'odjavi'>Logout</span></a>

当你点击这里时,你正在发送一个GET请求到你的注销视图。

所以你可以修改你的视图来接受GET请求,或者一个更好的解决方案是删除这个链接,这样它就变成了一个提交表单的按钮。

<input type="submit" value="Logout">

编辑:

我看到你也在为登录做同样的事情。始终使用<input type='submit' value='...'><button type='submit'> ... </button>来提交表单。

最新更新