在Flask Web App中从一个静态文件提供另一个静态文件

时间:2017-06-26 14:15:22

标签: python flask

在我的网络应用程序中,除了实际的应用程序相关页面(索引和输出)之外,我还有其他几个页面,但这些页面是静态的。例如,一个页面是&#34; Process&#34;另一个&#34;联系&#34;。在所有HTML文件的导航栏中,我想要链接到这些页面。我将这些页面作为<li><a href="./static/process.html">Process</a></li><li><a href="./static/contact.html">Contact</a></li>投放。

当从索引页面点击这些链接时,我可以访问其中任何一个页面 - 没问题。但是,如果我在Process页面上并单击Contact的链接,则会收到错误,因为地址栏显示它正在尝试访问http://localhost:5000/static/static/contact.html。我认为我添加链接到这些静态页面的方式可能是错误的。实现这一目标的最佳和正确方法是什么?

2 个答案:

答案 0 :(得分:0)

在路径中包含./表示从当前目录&#34;&#34;。

因此,您正试图从static目录中进入static目录。在两个静态页面之间进行链接时删除./static

答案 1 :(得分:0)

我相信这就是你要找的东西。

How to serve static files in Flask

# index.html
<a href="{{ url_for('static', filename='process.html') }}">link</a>

然后,当Jason说你需要从process.html中的链接中删除'./'并联系html。

# process.html
<a href="/static/contact.html">link</a>
# contact.html
<a href="/static/process.html">link</a>

就使用AWS提供文件而言,有很多不同的方法,但有一个烧瓶扩展,使得通过S3提供服务​​非常容易。 https://flask-s3.readthedocs.io/en/latest/

当从process.html链接到contact.html时,此解决方案无法轻松扩展,反之亦然,因为链接不是动态生成的。解决这个问题的唯一方法是制作模板并通过路线渲染和返回。