【问题标题】:Routing static pages with Flask or Bottle使用 Flask 或 Bottle 路由静态页面
【发布时间】:2018-02-24 01:00:38
【问题描述】:

使用时:

@route('/<filename>')
def server_static(filename):
    return static_file(filename, root='.')

它允许使用静态 HTML 文件 /myapp/helloworld 处理请求 www.example.com/helloworld

如何使www.example.com/anything 由静态 HTML 文件 /myapp/html/anything.html 提供服务,而无需在 Python 代码中对每个静态文件名 anything 进行硬编码?

注意:棘手的部分是请求是/anything(而不是/anything.html),静态文件是/myapp/html/anything.html(这样的文件有20个或更多)

【问题讨论】:

  • 您可能需要编写一些代码来处理输入。是否只是您要提供的 .html 文件?

标签: python flask bottle


【解决方案1】:

如果总是.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。这也可能是一个更安全的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2016-02-19
    • 2012-11-26
    • 2019-06-05
    相关资源
    最近更新 更多