使用bottle.py,如何正确呈现模板的静态文件请求?

时间:2015-01-02 03:44:23

标签: python bottle

我正在尝试使用bottle.py,我遇到了一些请求静态模板和渲染它们的问题。

我有一些基本路线:

@route("/feed")
def show_feed():
    # query database, calculate things, etc.
    # code to show feed (which is dynamic)

@route("/submit")
def show_submit():
    # query database, calculate things, etc.
    # code to show submit

@route("/<filename:path>")
def serve_static(filename):
    # code to simply return static files

我也有一些模板:

views/submit.html
views/feed.html

Web服务器本身没有问题。它的工作原理正如它所说。问题是当我像往常一样使用模板中的链接从一个页面到另一个页面时:

<a href="feed.html">Go back to the feed</a>

当用户点击该链接或手动输入“... / feed.html”或“... / submit.html”时,会请求网址.../feed.html而不是/feed,和瓶子路由到serve_static(filename)功能。因此,不会呈现模板 - 而是返回静态模板,完成“{{article [0]}}”和“%end%end”之类的丑陋内容。

如何让Bottle正确渲染这些模板?

当瓶子作为静态文件被请求时,是否有办法知道何时呈现模板?将href属性更改为服务器应该期望的内容是否可以被认为是一种可行的做法?有什么我不考虑的吗?

1 个答案:

答案 0 :(得分:4)

问题非常简单

<a href="feed.html">
鉴于您的网址格式,

错误href。只需将其更改为

即可
<a href="feed">

正如BrenBarn建议的那样,将模板移动到各自独立的子目录中也是一个好主意,远离您想要提供真正静态公共文件的子目录。但是,这本身并不能解决您的问题 - 您只需获得相关链接点击次数404即可。核心问题是修复<a>的{​​{1}}!