2014-03-13 3 views
0

мы можем украсить представление login_required, чтобы неавторизованный пользователь был перенаправлен на страницу входа.Мода для входа в django?

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

Я думаю, что я могу обработать, когда запрос сделан с помощью ajax.
Я мог бы использовать $ .ajaxSetup для обработки 401 ошибок, чтобы показать модальный.

Но как мне показать модальность при выполнении обычного запроса?

Редактировать

Похожий вопрос задают, Django authentication and Ajax - URLs that require login

Но она охватывает только Аякса запросы.

ответ

0

Хм, я бы предложил другой подход.

Модификации и такие всплывающие окна, когда javascript что-то делает. Для того, чтобы javascript «что-то делал», в html должен быть добавлен какой-то маркер.

Я предлагаю вам использовать для этого контекстный процессор.

1) Создайте контекстный процессор, целью которого является создание/добавление маркера в конец файла. Соответствующий шаблон часть будет что-то вроде

<script>var show_modal = {{ SHOW_MODAL }}</script> 

Если значение SHOW_MODAL исходит из контекста процессора

2) Добавьте свой код JS, чтобы показать модальный, если значение переменной show_modal означает, что вы должны сделать это.

+0

Существуют коды сторонних библиотек, которые возвращают ответ 401 для запроса ajax (например, рамки rest-api). Может ли контекстный процессор просматривать код состояния ответа? Я просто посмотрел на django doc, но не уверен, когда вызывается контекстный процессор .. до того, как настроен статус ответа или нет. – eugene

+0

Контекстный процессор не должен смотреть код состояния ответа. Контекстный процессор получает запрос как аргумент, и вы можете просто проверить, проверен ли request.user.is_authenticated или нет. –

+0

ну, я хочу только подмножество представлений (с custom_login_required decorator), чтобы проверить user.is_authenticated и добавить переменную. – eugene

Смежные вопросы