簡體   English   中英

燒瓶和OpenLayers

[英]Flask and OpenLayers

我有一個通過Flask部署的Web應用程序。 我正在使用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文件,但是我是flask的新手,因此無法正常工作。

提前致謝!

問候

您最好使用theme: null [1]選項配置地圖,這將禁用css的自動加載,並自行在頁面中加載。

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

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'))

這是正常現象。 您的方法def get_openlayers_css():以默認MIME類型TEXT返回URL作為字符串。

嘗試返回CSS內容,而不是Flask.send_from_directory的路徑。

看一下Flask文檔中的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM