【问题标题】:python bottle template not formattingpython瓶子模板没有格式化
【发布时间】:2014-01-21 02:52:41
【问题描述】:

我正在尝试学习一些 Bottle 基础知识并按照 bottlepy.org 页面上的教程进行操作。 首先我要说:在 Ubuntu 上运行(我认为是 12.04?)。我通过 sudo easy_install bottle 安装了瓶子,它只将它安装到我的python2.7 dist-packages 中。我在某处读到bottle.py 是有意减少依赖的,并且将bottle.py 复制到可用目录以使其在python3 中工作(我正在尝试使用python3.2)是合理的。

MWE:

在 helloworld.wsgi 我有:

#!/usr/bin/python3
from bottle import debug, route, run, template, view

@route("/hello")
@route("/hello/<name>")
@view("base")
def hello(name=None):
    return dict(name=name)

debug(True)
run(host="localhost", port=8080)

在 views/base.tpl 我有:

<% 
  if name is not None:
      name = name.title().strip()
  else:
      name = "World"
%>
<p>Hello {{name}}!</p>

但是当我尝试导航到一个站点( localhost:8080/hello 或 localhost:8080/hello/dude )时,我收到了一个错误:

SyntaxError: invalid syntax

指的是关闭“%>”的“>”(第 6 行)。

我不知道为什么会出现这个错误 - 我几乎逐字复制了网站上的示例,并且不知道如何在模板文本中包含 python 代码块(我不认为使用 %在每个代码行的开头都是一种合理的方法)。

有什么想法或想法吗?谢谢

【问题讨论】:

    标签: python templates syntax-error bottle


    【解决方案1】:

    我认为您正在查看与您使用的版本 (0.11.6) 不同的 Bottle 版本 (0.13-dev) 的文档。

    Bottle 的当前“稳定”版本是 0.11。看起来 SimpleTemplate&lt;% ... %&gt; 功能是在 0.12 和 0.13-dev 之间的某个时间添加的,即当前的“dev”分支。

    这里是相关的0.11 docs


    您可以通过以下几种方式解决此问题:

    1. 您可以使用更新的、未发布的 Bottle 版本。有风险。

    2. 您可以使用 0.11 机制来嵌入 Python 代码 % .. %end。但这显然已被弃用,更不用说烦人的较长代码块了。

    3. 您可以使用更健壮的模板语言;瓶子很好地集成了几个。我选择了Jinja2,我推荐它。它几乎与 Bottle 的内置模板一样简单,但更加灵活。这是其他人的同样积极的 experience 与 Bottle + Jinja2。

    【讨论】:

    • 啊,就是这样 - 无论如何我想要 Jinja2,我只是忘记了它是一个单独的模块。现在我已经解决了所有问题,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多