Метод 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,
через который выполняются запросы к базе