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

Метод get_or_404

Метод get_or_404 применяется к классу модели SQLAlchemy и ищет запись по первичному ключу. Первым параметром передаётся значение первичного ключа. Если запись с таким ключом существует, метод возвращает её объект. Если записи нет, Flask автоматически возвращает страницу с ошибкой 404.

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

Синтаксис

Model.get_or_404(ident, [description])

Пример

Давайте создадим модель User и получим пользователя по его id:

from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) @app.route('/user/<int:id>') def user(id): user = User.get_or_404(id) return user.name

Если пользователь с ключом 1 существует, результат выполнения кода будет таким:

abcde

Если пользователя с таким ключом нет, Flask вернёт страницу с ошибкой 404.

Пример

Давайте зададим собственное описание ошибки вторым параметром:

from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) @app.route('/user/<int:id>') def user(id): user = User.get_or_404(id, 'user not found') return user.name

Теперь при отсутствии записи в ответе будет текст user not found.

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

  • метод first_or_404,
    который возвращает первую запись или ошибку 404
  • метод one_or_404,
    который возвращает единственную запись или ошибку 404
  • класс SQLAlchemy,
    который связывает Flask и SQLAlchemy
  • атрибут session,
    через который выполняются запросы к базе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить