Узнайте, кто в данный момент вошел в систему в Django - PullRequest
11 голосов
/ 07 февраля 2010

Я создал список из 5 пользователей. Как узнать, какой пользователь уже вошел в систему? Также, пожалуйста, укажите, есть ли способ узнать, вошел ли суперпользователь в систему?

Мое требование: я хочу ограничить доступ определенных страниц в шаблонах только суперпользователю.

Ответы [ 3 ]

16 голосов
/ 07 февраля 2010

Текущий пользователь в объекте запроса:

def my_view(request):
    current_user = request.user

Это класс django.contrib.auth.models.User, и у него есть несколько полей, например,

  • is_staff - логическое значение. Обозначает, может ли этот пользователь получить доступ к сайту администратора;
  • is_superuser - Boolean. Обозначает, что этот пользователь имеет все разрешения без явного их назначения.

http://docs.djangoproject.com/en/1.1/topics/auth/#django.contrib.auth.models.User

Чтобы проверить, является ли текущий пользователь суперпользователем, вы можете:

if user.is_active and user.is_superuser:
    ...

Вы можете использовать его в шаблоне или передать его в качестве переменной через контекст.

3 голосов
/ 07 февраля 2010

Похоже, вы должны использовать для этого встроенную систему разрешений .

0 голосов
/ 07 февраля 2010

Проверьте user_passes_test декоратор для ваших просмотров. У Django snippets есть связанный декоратор:

Эти декораторы основаны на user_passes_test и allow_required, но когда пользователь вошел в систему и не прошел тест, он выдаст ошибку 403 вместо перенаправление на логин - только анонимный пользователям будет предложено войти в систему.

http://www.djangosnippets.org/snippets/254/

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