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
添加此内容作为参考,因为他正在做这件事。
答案 0 :(得分:1)
您实际上是在告诉Flask将/<path:static_path>
映射到静态文件。这意味着一切现在被视为静态。不要这样做!
Angular页面不需要调用Flask静态路由;保持静态路由在/static
下,让/
生成您的Angular应用程序,然后使用其他路由来处理Angular AJAX调用。这些可以有适当的路径; Angular没有规定Flask服务器将响应的路由。
然后保持静态路由以提供JavaScript和CSS以及图像,例如从HTML页面引用的实际静态内容。