Django - проверять, авторизован ли пользователь для каждого URL - PullRequest
0 голосов
/ 13 сентября 2018

В моем html я могу проверить, вошел ли пользователь, используя следующий синтаксис:

{% if user.is_authenticated %}
  <div id="display_something">...</div>
{% else %}
  <p>Please Log in</p>
{% endif %}

Но что мне делать, если я хочу проверить, проходит ли аутентификация пользователя для каждого html-файла, который я отображаю? Нужно ли копировать и вставлять этот блок {% if ... %} для каждого HTML-файла? Как Django решает эту проблему? Что такое хорошая практика?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вы не должны обрабатывать логику аутентификации в шаблоне (для всего сайта), вместо этого вы можете использовать login_required декоратор для ваших просмотров.

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    ...
0 голосов
/ 13 сентября 2018

в вашем base.html, добавьте свой чек

{% if user.is_authenticated %}
  {% block page %}
  {% endblock %}
{% else %}
  <p>Please Log in</p>
{% endif %}

затем со всеми остальными страницами добавьте {% extends 'base.html' %} вверху. Вам нужно будет дать ему относительную ссылку на base.html. Тогда остальная часть вашего кода на этой странице должна находиться между тегами, как показано ниже.

{% block page %}
<!-- all your html code here -->
{% endblock %}

Обратите внимание, что после block вам нужно иметь то же имя. в данном примере это page, но вы можете выбрать собственное имя переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...