Узнайте, в настоящее время входил в систему пользователь в Django

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

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

11
задан Peter Anderson 11 January 2013 в 17:50
поделиться

3 ответа

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

def my_view(request):
    current_user = request.user

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

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

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

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

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

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

16
ответ дан 3 December 2019 в 06:21
поделиться

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

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

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

0
ответ дан 3 December 2019 в 06:21
поделиться

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

3
ответ дан 3 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: