【问题标题】:Flask app can't find javascript file through relative path? [duplicate]Flask 应用程序无法通过相对路径找到 javascript 文件? [复制]
【发布时间】: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错误。

那么,我应该怎么做才能解决这个问题?

【问题讨论】:

    标签: flask


    【解决方案1】:

    您应该让您的静态资源使用根目录(如果您将它们全部保存在该目录中)。

    所以如果你的目录是这样的:

    .
    ├── app.py
    └── static
        ├── css
        ├── img
        └── js
            └── main.js
    

    尝试将/ 添加到您的 javascript URL 中,这样它就不会只是附加到页面 URL 上。

    例如然后<script src="js/main.js"></script> 会转到http://example.com/js/main.js

    仅供参考 - 您应该使用诸如 apachenginx 之类的 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 文件中来回答。
    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2013-06-06
    相关资源
    最近更新 更多