Python 静态文件不工作,正在烧瓶中使用jinja

Python 静态文件不工作,正在烧瓶中使用jinja,python,flask,Python,Flask,我是烧瓶的初学者。我的静态文件不工作,根目录 我有以下目录树: / <-------------- launching (flask run) the site, here. /static /static/css /static/js /static/img /flask_mysite /flask_mysite/log /flask_mysite/templates 要使用vagrant VM在根/文件夹中导航: flask run --host=192.168.5

我是烧瓶的初学者。我的静态文件不工作,根目录 我有以下目录树:

/          <-------------- launching (flask run) the site, here.
/static
/static/css
/static/js
/static/img
/flask_mysite
/flask_mysite/log
/flask_mysite/templates
要使用vagrant VM在根
/
文件夹中导航

flask run --host=192.168.56.101
在/flask_mysite/_init.py_u_u中,我有一个jinjia配置:

flask_mysite.jinja_env.globals['static'] = (
    lambda filename: url_for('static', filename=filename)
)

from flask_mysiteimport views, models

if __name__ == '__main__':
    flask_mysite.run(debug=True)
在/flask_mysite/templates/base.html中,例如:

<link rel="stylesheet" href="{{ static('css/main.css') }}">

因此,html生成:

<link rel="stylesheet" href="/static/css/main.css">

有人能帮我吗?:)

谢谢。
Fabrice

您使用了错误的静态文件:

你的template.html

<!doctype html>
<html>
<head>
    <link href="{{ urlfor('static' , filename='css/yourcss.css'}}">
    <script src="{{ urlfor('static' , filename='js/yourjs.js'}}"></script>
</head>
<body>
    <!-- the rest of your html -->
</body>
</html>


假设您有“static/css/yourcss.css”和“static/js/yourjs.js”,并且.py文件位于包含静态文件夹的文件夹的根目录下,那么您使用的静态文件是错误的:

你的template.html

<!doctype html>
<html>
<head>
    <link href="{{ urlfor('static' , filename='css/yourcss.css'}}">
    <script src="{{ urlfor('static' , filename='js/yourjs.js'}}"></script>
</head>
<body>
    <!-- the rest of your html -->
</body>
</html>


假设您有“static/css/yourcss.css”和“static/js/yourjs.js”,并且.py文件位于包含static文件夹的文件夹的根目录下

谢谢。但是,在生产中,它的工作方式与apache虚拟主机一样。但是,il本地模式,有VM的,不要。如果我移动“flask_mysite/static”中的“static”文件夹。没关系:)。在生产环境中,您的“/static”别名可能是您的静态文件夹,在本地环境中,如果您也使用Apache,您应该复制相同的配置,或者使用Flask方式提供静态文件,并且,我移动“static”文件夹,而不更改您告诉我的代码#更新:不,在本地模式下,我既不使用apache也不使用nginx,只是命令行(flaskrun)引用了官方文档:动态web应用程序也需要静态文件。这通常是CSS和JavaScript文件的来源。理想情况下,您的web服务器配置为为为您提供服务,但在开发过程中,Flask也可以这样做。只需在包中或模块旁边创建一个名为static的文件夹,即可在应用程序的/static上使用该文件夹。要为静态文件生成URL,请使用特殊的“静态”端点名称:Ok,谢谢。我已经阅读了文档:)。但我用的是jinja globals。所以,我想,就像你说的,apache也提供静态文件。谢谢。但是,在生产中,它的工作方式与apache虚拟主机一样。但是,il本地模式,有VM的,不要。如果我移动“flask_mysite/static”中的“static”文件夹。没关系:)。在生产环境中,您的“/static”别名可能是您的静态文件夹,在本地环境中,如果您也使用Apache,您应该复制相同的配置,或者使用Flask方式提供静态文件,并且,我移动“static”文件夹,而不更改您告诉我的代码#更新:不,在本地模式下,我既不使用apache也不使用nginx,只是命令行(flaskrun)引用了官方文档:动态web应用程序也需要静态文件。这通常是CSS和JavaScript文件的来源。理想情况下,您的web服务器配置为为为您提供服务,但在开发过程中,Flask也可以这样做。只需在包中或模块旁边创建一个名为static的文件夹,即可在应用程序的/static上使用该文件夹。要为静态文件生成URL,请使用特殊的“静态”端点名称:Ok,谢谢。我已经阅读了文档:)。但我用的是jinja globals。所以,我认为,就像你说的,apache也提供静态文件。
app = Flask(__name__)
@app.route("/")
def home():
return render('template.html')
<!doctype html>
<html>
<head>
    <link href="{{ urlfor('static' , filename='css/yourcss.css'}}">
    <script src="{{ urlfor('static' , filename='js/yourjs.js'}}"></script>
</head>
<body>
    <!-- the rest of your html -->
</body>
</html>