Spec-Zone.ru › Bottle 0.11

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

О 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.11/faq.html

Spec-Zone.ru

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