Задать вопрос
@pcdesign

Как победить ошибку «OverflowError: signed integer is greater than maximum»?

Вот документация по flask-mongoengine
docs.mongoengine.org/projects/flask-mongoengine/en...

И там есть параграф с паджинацией:

paginated_todos = Todo.objects.paginate(page=page, per_page=10)


Все отлично работает, на страницы разбивается.
Но, если ввести какое-нибудь здоровенное число для page (например, 220000000000), то получим ошибку
OverflowError: signed integer is greater than maximum


Если еще больше, page=22000000444444444444444444444440000, то ошибка
Python int too large to convert to C long

Вопрос. Можно ли как-то обойтись без
try:
     paginated_todos = Todo.objects.paginate(page=page, per_page=10)
except:
     abort(404)

?
Чтобы каждый раз не оборачивать в трай разбивку на страницы?

P.S.

Flask-SQLAlchemy - оказывается тем же самым страдает.
  • Вопрос задан
  • 899 просмотров
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фулстек-разработчик
    16 месяцев
    Далее
  • Академия Eduson
    FullStack-разработчик: тариф PRO
    14 месяцев
    Далее
  • Merion Academy
    Java-разработчик с нуля
    4 месяца
    Далее
Решения вопроса 1
LaRN
@LaRN
Senior Developer
Можно написать функцию по аналогии с приведенной doc-ой:
# Paginate through todo
def view_todos(page=1):
paginated_todos = Todo.objects.paginate(page=page, per_page=10)

И внутри этой функции делать проверку на наличие ошибки
def view_todos(page=1):
try:
return Todo.objects.paginate(page=page, per_page=10)
except:
abort(404)

А дальше везде в вашем коде использовать уже функцию view_todos, тогда код клонировать не придется.
По сути получается декоратор к функции пагинации.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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