使用时:
@route('/<filename>')
def server_static(filename):
return static_file(filename, root='.')
它允许使用静态HTML文件www.example.com/helloworld
提供请求/myapp/helloworld
。
如何让www.example.com/anything
由静态HTML文件/myapp/html/anything.html
提供服务,而无需在Python代码中对每个静态文件名anything
进行硬编码?
注意:棘手的部分是请求是/anything
(而不是/anything.html
),静态文件是/myapp/html/anything.html
(有20个或更多此类文件)
答案 0 :(得分:0)
如果它总是.html
,您可以考虑简单地执行filename += '.html'
。
如果您的需求更复杂,您可以编写检查目录以匹配各种扩展的代码。例如,如果你想匹配.html文件,这样的东西就可以工作,并且可以调整以适应各种/多个扩展或其他条件。
def is_html(filename):
return filename.lower().endswith('.html')
@route('/<filename>')
def server_static(filename):
root = '.'
all_filenames = os.listdir(root)
html_files = filter(is_html, all_filenames)
for fname in html_files:
if fname.startswith(filename):
return static_file(fname, root=root)
else:
return "No such file"
这可以使用fnmatch或类似的东西缩写。
虽然,您可能只想简单地考虑像Apache这样的网络服务器只是提供该路径而不是使用Flask。这也可能是一个更安全的选择。