Spec-Zone.ru › Bottle 0.12

Часто задаваемые вопросы

О Bottle

Подходит ли Bottle для сложных приложений?

Bottle — это микрофреймворк, разработанный для прототипирования и создания небольших веб-приложений и сервисов. Он не вмешивается в вашу работу и позволяет быстро достигать результатов, но отсутствуют некоторые расширенные функции и готовые решения, которые есть в других фреймворках (MVC, ORM, валидация форм, scaffolding, XML-RPC). Хотя добавление этих функций и создание сложных приложений с Bottle возможно, следует рассмотреть использование полнофункционального веб-фреймворка, такого как pylons или paste.

Общие проблемы и ловушки

“Шаблон не найден” в mod_wsgi/mod_python

Bottle ищет шаблоны в ./ и ./views/. В среде mod_python или mod_wsgi рабочая директория (./) зависит от настроек Apache. Вам следует добавить абсолютный путь к пути поиска шаблонов:

bottle.TEMPLATE_PATH.insert(0,'/absolut/path/to/templates/')

чтобы bottle искал шаблоны по правильным путям.

Динамические маршруты и слеши

В синтаксисе динамических маршрутов маркер подстановки (:name) соответствует всему до следующего слеша. Это эквивалентно [^/]+ в синтаксисе регулярных выражений. Чтобы также принять слеши, необходимо добавить пользовательский регулярный шаблон к маркерам подстановки. Например: /images/:filepath#.*# будет соответствовать /images/icons/error.png, но /images/:filename не будет.

Проблемы с обратными прокси

Перенаправления и построение URL работают только в том случае, если bottle знает общедоступный адрес и расположение вашего приложения. Если вы запускаете bottle локально через обратный прокси или балансировщик нагрузки, некоторая информация может потеряться по пути. Например, значение wsgi.url_scheme или заголовок Host могут отражать локальный запрос вашего прокси, а не реальный запрос клиента. Вот небольшой фрагмент WSGI-средства обработки, который поможет исправить эти значения:

def fix_environ_middleware(app):
  def fixed_app(environ, start_response):
    environ['wsgi.url_scheme'] = 'https'
    environ['HTTP_X_FORWARDED_HOST'] = 'example.com'
    return app(environ, start_response)
  return https_app

app = bottle.default_app()
app.wsgi = fix_environ_middleware(app.wsgi)

© 2009–2017 Marcel Hellkamp
Licensed under the MIT License.
https://bottlepy.org/docs/0.12/faq.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API