13

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

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

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

/静态/hi.html

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

4

2 回答 2

20

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

from flask import url_for, redirect

@app.route('/')
def home():
    return redirect(url_for('static', filename='hi.html'))
于 2013-04-08T16:14:56.380 回答
8

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

from flask import render_template, url_for

...

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

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

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

于 2013-04-08T16:17:49.673 回答