Flask и OpenLayers - PullRequest
       1

Flask и OpenLayers

1 голос
/ 22 марта 2012

У меня есть веб-приложение, которое разворачивается с помощью Flask.Я использую карту OpenLayers, которая запрашивает таблицу стилей в папке scriptdir / theme / default.Я не очень доволен своим решением, поэтому надеюсь, что кто-нибудь подскажет, как сделать его лучше:

@app.route('/theme/default/style.css')
def get_openlayers_css():
   return url_for('static', filename='jslib/theme/default/style.css')

Консоль javascript показывает мне это предупреждение:

Resource interpreted as Stylesheet but transferred with MIME type text/html: http://localhost:5000/theme/default/style.css
   OpenLayers.Map.OpenLayers.Class.initialize                 OpenLayers.js:424
   ...

Запрошенная таблица стилей находится в /static/jslib/theme/default/style.css, а файл OpenLayers.js - в / static / jslib.Я думал о потоковой передаче файла CSS, но я новичок в колбе, и поэтому я не смог заставить это работать.

Заранее спасибо!

Привет

Ответы [ 3 ]

3 голосов
/ 22 марта 2012

вам лучше настроить карту с параметром theme: null [1], который отключит автозагрузку css и загрузит ее самостоятельно на странице.

1 - http://dev.openlayers.org/docs/files/OpenLayers/Map-js.html#OpenLayers.Map.theme

2 голосов
/ 22 марта 2012

OpenLayers имеет странный способ поиска базового URL для своих ресурсов (см. исходный код ). Если вы используете «распакованную» версию (не однофайловую), тогда OpenLayers.js должен находиться внутри папки с именем lib, в противном случае автоопределение URL завершится неудачей.

Кроме того, ваша функция get_openlayers_css возвращает текстовый ответ, содержащий URL; вы, вероятно, хотели написать редирект:

@app.route('/theme/default/style.css')
def get_openlayers_css():
   return redirect(url_for('static', filename='jslib/theme/default/style.css'))
1 голос
/ 16 декабря 2014

Это нормальное поведение.Ваш метод def get_openlayers_css(): возвращает URL-адрес в виде строки с типом MIME по умолчанию TEXT.

Попробуйте вернуть содержимое CSS вместо пути с помощью Flask.send_from_directory.

Посмотрите на пример в документации Flask .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...