2017-03-07 110 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