Метод first_or_404
Метод first_or_404 применяется к объекту запроса
SQLAlchemy и возвращает первую запись из результата.
Если ни одной записи не найдено, Flask автоматически
прерывает выполнение и возвращает ошибку 404. Это
удобно для обработчиков, где отсутствие данных должно
приводить к стандартному ответу "страница не найдена".
Метод не принимает обязательных параметров.
Синтаксис
Model.query.first_or_404()
Пример
Давайте создадим модель и получим первую запись из таблицы. Если записей нет, будет возвращена ошибка 404:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
@app.route('/')
def index():
user = User.query.first_or_404()
return user.name
Если в таблице есть запись с именем 'abcde',
результат выполнения кода:
abcde
Пример
Давайте применим фильтр к запросу и получим первую подходящую запись. Если такой записи нет, вернётся ошибка 404:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100))
@app.route('/article')
def article():
art = Article.query.filter_by(title='article').first_or_404()
return art.title
Результат выполнения кода:
<+html+>
article
<-html+>
Смотрите также
-
класс
SQLAlchemy,
который интегрирует SQLAlchemy в приложение Flask -
метод
get_or_404,
который возвращает запись по первичному ключу или ошибку 404 -
метод
one_or_404,
который возвращает единственную запись или ошибку 404 -
метод
paginate,
который возвращает записи с постраничной разбивкой