我有一个django应用程序,可以成功注册和登录用户。但是我无法注销用户。
在前端,我有一个网页,其中包含一个电源按钮图标,单击该图标将触发注销请求。
我在前端使用angular js
index.html
<div class="col-xs-2">
<span style="opacity: 0.5;font-family: FontAwesome;font-size: 14px;color:#838F98;text-align:center;cursor:pointer" ng-click="logout()">
<i class="fa fa-power-off" aria-hidden="true"></i>
</span>
</div>
在这里,我使用ngclick
调用了 index.js
logout()
函数
index.js
$scope.logout = function() {
var url = '/logout';
var toSend = {
username: username_id,
}
$http({
method: 'POST',
url: url,
data: toSend,
}).then(function(response) {
response.data;
})
};
此函数调用我在urls.py中为其定义了身份验证视图的/logout
URL
urls.py
from django.contrib.auth.views import login, logout
url(r'^logout$', logout, {'template_name': 'login.html'}),
但是当我单击网页上的电源图标时,什么也没有发生。用户停留在页面中,并且我没有收到任何错误消息。
我在做什么错了?
更新
好吧,我将对JavaScript POST
的调用从/logout
的URL更改为GET调用,它似乎可以正常工作。但是,该页面没有重定向到login.html
页面,并且停留在如果我关闭标签页并重新打开它,它会再次要求登录,这意味着注销现在可以进行。但是为什么不重定向到登录页而只停留在那里?
答案 0 :(得分:0)
通过一项简单的研究,我发现您需要在收到响应后使用javascript重定向页面。
以您的情况
$scope.logout = function() {
var url = '/logout';
var toSend = {
username: username_id,
}
$http({
method: 'POST',
url: url,
data: toSend,
}).then(function(response) {
// perform redirect
window.location('/login');
})
};