static_url_path和变量规则

时间:2014-10-20 12:46:06

标签: python flask

Variable rules在我使用static_url_path时无法正常工作。

简单地说,为什么这样做:

import flask

app = flask.Flask(__name__)

@app.route("/", defaults={"p": "")
@app.route("/<path:p>")
def main(p):
    return "<h1>Hello %s</h1>" % p


if __name__ == '__main__':
    app.run(debug=True)

但不是吗?

import flask

app = flask.Flask(__name__, static_url_path="")

@app.route("/", defaults={"p": "")
@app.route("/<path:p>")
def main(p):
    return "<h1>Hello %s</h1>" % p


if __name__ == '__main__':
    app.run(debug=True)
  

请注意添加的static_url_path

一些背景细节;我是Flask和AngularJS的新手,但是他们在这里一起使用它们以及那些不熟悉AngularJS的人;我使用AngularJS生成单页面应用程序,其中路径用于动态替换文档中的内容,而不是重新加载整个页面。因此,我需要路由到同一个html文档的所有路径(不包括在上面的例子中),理想情况下来自同一个函数,以便让AngularJS处理渲染而不是Flask。

以下答案解决了这个问题,但在使用status_url_path时它无法正常工作,我无法弄清楚原因。

Flask route for AngularJS with HTML5 URL mode

添加此内容作为参考,因为他正在做这件事。

http://www.youtube.com/watch?v=2geC50roans

1 个答案:

答案 0 :(得分:1)

您实际上是在告诉Flask将/<path:static_path>映射到静态文件。这意味着一切现在被视为静态。不要这样做!

Angular页面不需要调用Flask静态路由;保持静态路由在/static下,让/生成您的Angular应用程序,然后使用其他路由来处理Angular AJAX调用。这些可以有适当的路径; Angular没有规定Flask服务器将响应的路由。

然后保持静态路由以提供JavaScript和CSS以及图像,例如从HTML页面引用的实际静态内容。