【发布时间】:2014-05-06 13:11:37
【问题描述】:
默认情况下,Flask 允许在静态文件夹中嵌套一层。比如
->static <BR>
---->css <BR>
------->images<BR>
我们可以通过浏览器访问css目录下的文件。
例如http://localhost:5000/static/css/file1.css
如何通过浏览器访问images目录下的文件?
【问题讨论】:
标签: python python-2.7 flask
默认情况下,Flask 允许在静态文件夹中嵌套一层。比如
->static <BR>
---->css <BR>
------->images<BR>
我们可以通过浏览器访问css目录下的文件。
例如http://localhost:5000/static/css/file1.css
如何通过浏览器访问images目录下的文件?
【问题讨论】:
标签: python python-2.7 flask
Flask 使用您的静态路径(默认为/static)和任何文本设置静态文件的路由。来自source:
self.add_url_rule(self.static_url_path + '/<path:filename>',
endpoint='static',
view_func=self.send_static_file)
send_to_static 传递此路由分配给filename 的任何内容。
return send_from_directory(self.static_folder, filename,
cache_timeout=cache_timeout)
如果您查看source 中的send_from_directory,您会发现它只是使用safe_join(directory, filename) 来获取文件的路径。
safe_join 本身只是做一些工作来规范路径并注意文件名中的 .. 之类的东西。
回到URL route,path 匹配任何文本。就像string 一样,除了它接受斜线。这意味着您可以在静态文件夹中使用任何级别的嵌套。像 /static/file.txt 和 /static/p/a/t/h/t/o/file.txt 这样的 URL 都可以使用。只要 URL 以您的静态路径开头,您想要的行为开箱即用:
http://localhost:5000/static/css/images/image1.png
【讨论】:
不确定,你在哪里可以找到,Flask 只允许一层嵌套。
试试吧。
我有目录 ./static/html/jobs.html,我在 url http://localhost:5000/static/html/jobs.html 上得到这个服务。
【讨论】: