2017-03-07 279 views
0

我想用Flask寫一個簡單的API。我正在關注米格爾格林伯格的blog燒瓶無法解析靜態文件

我有一個用例,我試圖提供一個靜態頁面。我無法爲靜態網頁提供服務。

這裏是我的app.py

from flask import Flask, request, abort, render_template 

app = Flask(__name__) 

@app.route('/sample/application/', methods=['GET']) 
def static_website(): 
    return render_template('index.html') 

if __name__ == '__main__': 
    app.run(debug=True) 

而以下是我的目錄佈局:

flask_application/ 
    - app.py 
    - static/ 
     - index.html 
     - cs/ 
      - app.css 
      - bootstrap.css 
     - js/ 
      - jquery.js 
     - images/ 
      - logo.png 

在任何人,標誌着這是一個重複的,我已經經歷了以下職位消失了,現在也沒有解決了我的問題。

還有其他的問題,但任何人的給出了一個具體的解決方案,以解決靜態頁面的CSS,JS文件。

由Flask創建的服務器無法獲取js,css文件。

此外,我避免模板化,因爲這是唯一的用例,我非常確定,我不會添加任何其他頁面或使其更加複雜。

+1

http://stackoverflow.com/a/42466734/1632479 –

回答

2

該模板需要位於名爲templates的文件夾中。所以正確的方法應該是

flask_application/ 
    - templates/ 
    - index.html 

可以爲render_template方法讀取documentation

+0

的CSS和JS文件需要只在靜態文件夾下? – Amriteya

+0

是的,它只是應該在模板文件夾中的html模板。您正在提供的所有其他文件應該位於靜態目錄中。 雖然也有可能需要自定義的設置。但這是總體佈局。 – Jonathan

+0

@amriteya,但如果你是在一個完全靜態的網站之後,爲什麼你不使用像鵜鶘這樣的東西?有沒有理由使用燒瓶? – Jonathan

0

如果您不關心渲染模板,您可以發送路由上的靜態文件。這樣,您可以將所有內容保留在static目錄中。

app.send_static_file('index.html')

只記得資產的其餘部分將需要按/static/<asset>被引用,即<script src="/static/js/jquery.js></script>

+0

這不起作用。我嘗試過這個。 – Amriteya