2014-01-21 1 views
3

Я пытаюсь изучить некоторые основы бутылок и следовать руководству на страницах bottpy.org. Сначала я скажу: работает на Ubuntu (12.04 думаю?). Я установил бутылку через sudo easy_install bottle, который установил ее только в мои дистрибутивные пакеты python2.7. Я где-то читал, что 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) 

И во взглядах/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 в текст шаблона (я не думаю, что использование % в начале каждой строки кода является разумным способом сделать это).

Любые мысли или идеи? Благодаря

ответ

4

Я думаю, что вы смотрите на документацию для другой версии (0,13-DEV) из бутылки с одной вы используете (0.11.6).

Текущая «стабильная» версия бутылки равна 0,11. Похоже, что функция <% ... %>SimpleTemplate была добавлена ​​некоторое время между 0.12 и 0.13-dev, текущей ветвью «dev».

Вот 0.11 docs.


Вы можете обойти эту проблему несколькими способами:

  1. Вы можете перейти на более новую, неизданный версию бутылки. Рискованный.

  2. Вы можете использовать механизм 0.11 для встраивания кода Python, % .. %end. Но это явно не рекомендуется, не говоря уже о раздражении для более длинных блоков кода.

  3. Вы можете использовать более надежный язык шаблонов; Бутылка прекрасно сочетается с несколькими. Я выбрал Jinja2, и я рекомендую его. Это почти так же просто, как встроенные шаблоны Bottle, но гораздо более гибкие. Вот кто-то такой же положительный experience с Bottle + Jinja2.

+0

Ах, это было именно так - и я хотел Jinja2 в любом случае, я только что забыл, что это отдельный модуль. Теперь у меня все получилось, спасибо! – dwanderson