【问题标题】:flask - Why url of an image is not identical to its actual path?flask - 为什么图像的 url 与其实际路径不同?
【发布时间】:2016-05-19 09:13:31
【问题描述】:

我正在使用flask.send_file 向我的客户发送图像。

但是,当我尝试使用url_for获取图片的url时,我发现返回的结果与图片的路径不一样。

def get(self):
        print url_for('static', filename='test.jpg')
        filename = 'static/img/test.jpg'
        return send_file(filename)

我明白了

/static/test.jpg

在控制台中。

文件结构是

└── static
    └── img
        └── test.jpg

为什么网址不是/static/img/test.jpg

编辑

当我从浏览器请求时,上面的代码运行良好。相反,如果我将文件名更改为static/test.jpg,浏览器会返回错误。

【问题讨论】:

    标签: python flask


    【解决方案1】:

    因为您已经告诉它在“static”中打印“test.jpg”的 URL。由于您没有包含对“img”的任何引用,因此 url_for 无法包含它。

    请注意,这与您从函数返回的实际 URL 无关。

    【讨论】:

    • 对不起。我不太明白include any reference to "img" 是什么意思。那么url_for方法会自动忽略里面的子目录吗?
    • 不,我完全不是这么说的,我无法理解你的困惑。当您仅通过“静态”和“test.jpg”时,您正在打印url_for 的结果。该函数所做的只是从这两个值创建一个 URL。它不知道也不关心您的实际目录结构。它也与您从该方法返回的实际 URL 没有任何关系
    【解决方案2】:

    因为你应该给url_for你的图片的完整路径relative到静态文件夹。 所以我认为在你的情况下它会是

    url_for('static', filename='img/test.jpg')

    url_for 只会将您给它的路径连接到静态文件夹路径,以便生成该文件的 URI,但它不会神奇地映射或猜测文件的位置。

    【讨论】:

    • 我好像没有表达清楚,让你有误会。请查看我的编辑。
    猜你喜欢
    • 2016-02-02
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2013-05-26
    相关资源
    最近更新 更多