template.render () Google App Engine (python) - PullRequest
       12

template.render () Google App Engine (python)

2 голосов
/ 01 февраля 2010

Для этого я использую каркас веб-приложения от Google. Я использую template.render () в методе get для рендеринга шаблона для меня.

Я использую следующий код, чтобы сделать это для меня

path = os.path.join(os.path.dirname(__file__), file_name)
self.response.out.write(template.render(path, template_values))

Где file_name - это шаблон для отображения, а template_values ​​- это dict (), содержащий любые значения для отображения. Что делать, если у меня нет значений, которые я хочу отобразить. Я просто передаю пустой объект dict()? Это не кажется мне отличным решением. Должен ли я использовать template.load() вместо этого?

(я не могу найти документы для класса шаблона в google app engine, поэтому я спрашиваю.)

Ответы [ 4 ]

5 голосов
/ 02 февраля 2010

Вы можете передать ему пустой словарь, и это не против. Вы просто должны что-то отправить. Ваши шаблоны просто не будут ничего отображать.

template_values = {}

path = os.path.join(os.path.dirname(__file__), file_name)
self.response.out.write(template.render(path, template_values))
4 голосов
/ 03 февраля 2010

Хорошо, спасибо за все ответы.

То, что я сделал, это:

def render_template(template_name, template_values=dict()):
   path = os.path.join(os.path.dirname(__file__), template_name)
   self.response.out.write(template.render(path, template_values))

Что, кажется, является самым питоническим решением, которое я мог придумать.

1 голос
/ 02 февраля 2010

Если у вас нет шаблонных переменных для передачи, просто передайте пустой словарь. Если вы используете какие-либо переменные в шаблоне, все они будут оцениваться как None.

Чтобы сделать это проще, вы можете изменить свой вспомогательный код:

def render_template(template_name, template_values = None):
  if template_values is None:
    template_values = {}
  path = os.path.join(os.path.dirname(__file__), template_name)
  self.response.out.write(template.render(path, template_values))
1 голос
/ 01 февраля 2010

Поскольку вы визуализируете шаблон Django, вам нужно использовать render, и вы, вероятно, не сможете предоставить пустой словарь, поскольку он будет жаловаться на невозможность найти ожидаемые переменные, если вы не приложите каждую ссылку на переменнуюблок {% if%}.Вы должны предоставить словарь со всеми ключами, которые ожидает шаблон, но с пустыми строками в качестве значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...