使用 bottle.py,如何正确呈现模板的静态文件请求?
With bottle.py, how do I properly render static file requests of templates?
我正在试验 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
网络服务器本身没有问题。它按说明工作。问题是当我像往常一样在我的模板中使用 links 从一页转到另一页时:
<a href="feed.html">Go back to the feed</a>
当用户点击 link 或手动输入“.../feed.html”或“.../submit.html”时,URL .../feed.html
被请求而不是 /feed
,Bottle 将其路由到 serve_static(filename)
函数。结果,模板没有被渲染——相反,返回了静态模板,其中包含诸如“{{article[0]}}”和“% end % end”之类的丑陋内容。
如何让 Bottle 正确渲染这些模板?
当模板被请求为静态文件时,有没有办法让 Bottle 知道何时渲染模板?将 href
属性更改为服务器应该期望的属性是否被认为是一种好的做法?有什么我没有考虑的吗?
问题很简单
<a href="feed.html">
根据您的 URL 模式,href
有误。只需将其更改为
<a href="feed">
正如 BrenBarn 所建议的那样,将模板移动到它们自己单独的子目录中,远离您想要提供真正静态 public 文件的子目录也是一个好主意。但是,就其本身而言,这并不能解决您的问题——您只会在点击有问题的 link 时得到 404。核心问题是修复 <a>
的 href
!
我正在试验 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
网络服务器本身没有问题。它按说明工作。问题是当我像往常一样在我的模板中使用 links 从一页转到另一页时:
<a href="feed.html">Go back to the feed</a>
当用户点击 link 或手动输入“.../feed.html”或“.../submit.html”时,URL .../feed.html
被请求而不是 /feed
,Bottle 将其路由到 serve_static(filename)
函数。结果,模板没有被渲染——相反,返回了静态模板,其中包含诸如“{{article[0]}}”和“% end % end”之类的丑陋内容。
如何让 Bottle 正确渲染这些模板?
当模板被请求为静态文件时,有没有办法让 Bottle 知道何时渲染模板?将 href
属性更改为服务器应该期望的属性是否被认为是一种好的做法?有什么我没有考虑的吗?
问题很简单
<a href="feed.html">
根据您的 URL 模式,href
有误。只需将其更改为
<a href="feed">
正如 BrenBarn 所建议的那样,将模板移动到它们自己单独的子目录中,远离您想要提供真正静态 public 文件的子目录也是一个好主意。但是,就其本身而言,这并不能解决您的问题——您只会在点击有问题的 link 时得到 404。核心问题是修复 <a>
的 href
!