Flask 应用程序无法通过相对路径找到 javascript 文件? [复制]
Posted
技术标签:
【中文标题】Flask 应用程序无法通过相对路径找到 javascript 文件? [复制]【英文标题】:Flask app can't find javascript file through relative path? [duplicate] 【发布时间】:2015-03-17 05:09:59 【问题描述】:在我的 Flask 应用程序中。如果页面的路径是http://example.com/product/6
。我无法像这样在此页面的 html 文件中导入 js 文件:
<script src="js/main.js"></script>
浏览器会搜索http://example.com.product/js/main.js
中的js文件,返回404错误。
那么,我应该怎么做才能解决这个问题?
【问题讨论】:
【参考方案1】:您应该让您的静态资源使用根目录(如果您将它们全部保存在该目录中)。
所以如果你的目录是这样的:
.
├── app.py
└── static
├── css
├── img
└── js
└── main.js
尝试将/
添加到您的 javascript URL 中,这样它就不会只是附加到页面 URL 上。
例如然后<script src="js/main.js"></script>
会转到http://example.com/js/main.js
。
仅供参考 - 您应该使用诸如 apache 或 nginx 之类的 Web 服务器来处理您的静态文件,因为它们比 Flask 更胜一筹。
【讨论】:
你能详细说明为什么 Apache 或 Nginx 比 Flask 好很多吗?以什么方式? @zwep 我实际上写了更多信息in a different answer,但基本上是为了性能(Flask 一次只处理一个请求)和安全性是重中之重。它们专为处理更多流量而设计,并可针对 SSL 终止等进行配置。【参考方案2】:您应该使用url_for
为您的静态资产生成 URL。
<script src="% url_for('static', filename='js/main.js' %"></script>
【讨论】:
您询问了有关加载 JavaScript 文件的问题。您应该为此使用url_for
。如果您想知道如何在 JavaScript 文件中引用 URL,这是一个完全不同的问题,可以通过将 JavaScript 中的 URL 放置在模板文件中或将 URL 直接放置到 JavaScript 文件中来回答。以上是关于Flask 应用程序无法通过相对路径找到 javascript 文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Flask-SqlAlchemy - 与列''关联的外键无法找到表