РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
435 of 643 menu

Переменная current_user

Переменная current_user доступна внутри контекста запроса и хранит объект пользователя, выполняющего текущий запрос. Если пользователь не авторизован, переменная содержит анонимного пользователя, у которого is_authenticated равно False. Переменная не принимает параметров: она автоматически заполняется Flask-Login на основе данных сессии или загрузчика пользователя user_loader.

Обычно current_user применяется в шаблонах и в обработчиках маршрутов для проверки прав доступа и вывода данных пользователя.

Синтаксис

from flask_login import current_user current_user

Переменная импортируется из модуля flask_login и работает только внутри контекста запроса.

Пример

Давайте создадим простое приложение с Flask-Login и выведем имя текущего пользователя на главной странице:

from flask import Flask, render_template from flask_login import LoginManager, UserMixin, login_user, current_user app = Flask(__name__) app.secret_key = 'abcde' login_manager = LoginManager() login_manager.init_app(app) class User(UserMixin): def __init__(self, id, name): self.id = id self.name = name users = {'1': User('1', 'user')} @login_manager.user_loader def load_user(user_id): return users.get(user_id) @app.route('/') def index(): if current_user.is_authenticated: return current_user.name return 'hello'

После входа пользователя результат выполнения кода:

user

Для неавторизованного пользователя результат выполнения кода:

hello

Пример

Давайте используем current_user внутри Jinja-шаблона, чтобы вывести имя пользователя:

from flask import Flask, render_template from flask_login import LoginManager, UserMixin, login_user, current_user app = Flask(__name__) app.secret_key = 'abcde' login_manager = LoginManager() login_manager.init_app(app) class User(UserMixin): def __init__(self, id, name): self.id = id self.name = name users = {'1': User('1', 'user')} @login_manager.user_loader def load_user(user_id): return users.get(user_id) @app.route('/') def index(): login_user(users['1']) return render_template('index.html')

Теперь напишем сам шаблон:

<p>{{ current_user.name }}</p>

Результат выполнения кода:

<p>user</p>

Смотрите также

  • функцию login_user,
    которая выполняет вход пользователя
  • функцию logout_user,
    которая выполняет выход пользователя
  • класс UserMixin,
    который добавляет пользователю нужные методы
  • декоратор login_required,
    который ограничивает доступ к маршруту
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить