【问题标题】:python flask - serving static filespython flask - 提供静态文件
【发布时间】:2023-03-06 06:01:01
【问题描述】:

我正在尝试使用烧瓶提供静态文件。我不知道如何使用 url_for 函数。我所有生成动态内容的路由都工作正常,我已经导入了 url_for,但是当我有这个代码时:

@app.route('/')
def home():
    return url_for('static', filename='hi.html')

连同位于静态目录中的“hi.html”文件(其中包含一些基本的 html),我在加载页面时得到的实际上是这样的:

/static/hi.html

我只是错误地使用了 url_for 吗?

【问题讨论】:

    标签: python flask


    【解决方案1】:

    url_for 只是准确地返回该文件的 URL。听起来您想redirect 到该文件的 URL。相反,您只是将 URL 的文本作为响应发送给客户端。

    from flask import url_for, redirect
    
    @app.route('/')
    def home():
        return redirect(url_for('static', filename='hi.html'))
    

    【讨论】:

    • 这里没有白痴,只有还不知道的人。 sberry 关于提供静态文件的建议也很合适。
    【解决方案2】:

    你正在为你正在做的事情得到正确的输出。 url_for 为您提供的参数生成 url。在您的情况下,您正在为hi.html 目录中的hi.html 文件生成url 。如果要实际输出文件,则需要

    from flask import render_template, url_for
    
    ...
    
        return render_template(url_for("static", filename="hi.html"))
    

    但此时,您的静态目录需要位于模板目录下(配置为存在的任何位置)。

    如果您要提供这样的静态 html 文件,那么我的建议是通过直接从您的 Web 服务器将流量路由到 /static/.* 在烧瓶应用程序之外提供它们。网上有很多使用 nginx 或 apache 的例子。

    【讨论】:

    • 谢谢 - 我打算直接从我的网络服务器为他们提供服务,就在我开发的时候,我希望能够使用烧瓶为他们提供服务,最重要的是它让我发疯.
    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 2015-11-03
    • 2021-05-03
    相关资源
    最近更新 更多