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 для вызова функции logout(), которая определена в моем index.js

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;
   })
  };

Эта функция вызывает URL-адрес /logout, для которого я определил просмотры аутентификации в urls.py

urls.py

from django.contrib.auth.views import login, logout

url(r'^logout$', logout, {'template_name': 'login.html'}),

Но когда я нажимаю на значок питания на веб-странице, ничего не происходит. Пользователь остается на странице, и я не получаю сообщения об ошибке.

Что я делаю неправильно?

ОБНОВИТЬ

Хорошо, я изменил вызов Javascript POST на URL-адрес /logout на вызов GET, и, похоже, он работает. Однако страница не перенаправляет на страницу login.html и остается на той же странице. Если я закрываю вкладку и снова открываю ее, она запрашивает для повторного входа в систему, что означает, что выход из системы сейчас работает, но почему он не перенаправляет на страницу входа и просто остается там?

попробуйте отладить в своей консоли.

Atul Kumar 29.07.2018 11:34

Вы случайно не перезаписали процедуру logout (например, импортировали что-то с похожим именем или записали функцию logout в views.py)?

Willem Van Onsem 29.07.2018 11:34

@WillemVanOnsem нет, в моем views.py я определил logout_view как функцию для выхода пользователей из системы. Больше нигде в файле views.py я не определил любую функцию с именем logout.

Souvik Ray 29.07.2018 11:38

Можете ли вы опубликовать свой консольный вывод

Emmanuel Mtali 29.07.2018 12:49

@EmmanuelMtali Я опубликовал обновление вопроса.

Souvik Ray 29.07.2018 18:14

@WillemVanOnsem, пожалуйста, проверьте обновление вопроса.

Souvik Ray 29.07.2018 18:14

как насчет вашего файла настроек, вы установили LOGOUT_REDIRECT_URL?

matiasm77 29.07.2018 18:32

@ matiasm77 о, я забыл установить это. Однако даже тогда он не перенаправляется. В элементе проверки я вижу, что он пытается сначала получить URL-адрес /logout, который я не определил, и выдает ошибку 302. А затем он пытается посетите URL-адрес '/ login'. Но я все равно не хочу, чтобы он посещал URL-адрес '/ logout'. Я просто хочу, чтобы он был перенаправлен на URL-адрес страницы входа, который является '/ login', и это я установил как значение LOGOUT_REDIRECT_URL.

Souvik Ray 29.07.2018 18:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
134
1

Ответы 1

Проведя простое исследование, я обнаружил, что вам нужно перенаправить страницу с помощью 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');
    })
};

привет, спасибо за ответ. Но если вы заметили мой urls.py, я использовал django auth views logout.

Souvik Ray 29.07.2018 20:31

Какую версию django вы используете?

Emmanuel Mtali 29.07.2018 20:31

моя версия - django 1.10

Souvik Ray 29.07.2018 20:32

Другие вопросы по теме