Django不会注销用户

时间:2018-07-29 09:32:16

标签: javascript python angularjs django

我有一个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页面,并且停留在如果我关闭标签页并重新打开它,它会再次要求登录,这意味着注销现在可以进行。但是为什么不重定向到登录页而只停留在那里?

1 个答案:

答案 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');
    })
};