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 文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用Apache时,Flask无法找到应用程序路径

Java 路径

Flask-SqlAlchemy - 与列''关联的外键无法找到表

[Shell]crontab 运行任务调用shell脚本,相对路径无法找到

如何加载指定路径的Logback.xml

java web中读取文件,相对路径怎么写