Использование template.render () без ссылки на файл - PullRequest
2 голосов
/ 13 июля 2011

Можно ли использовать template.render () без пути к файлу?

Я бы хотел выполнить динамическую замену строк для свойств текста в моем хранилище данных.Шаблонация сразу пришла в голову.Возможно, есть другой способ?Моя мысль была следующей ...

my_string = template.render(my_model.description,template_dict)

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Судя по тегу "google-app-engine", я предполагаю, что вы говорите о шаблонизаторе, предоставляемом google.appengine.ext.webapp?Согласно документации : "для вашего удобства модуль webapp включает движок шаблонов Django".Итак, взгляните на Django документы для шаблонов ...

Насколько я могу судить, вы сможете сделать что-то вроде следующего (я предполагаю, что my_model.description содержитВаш шаблон строки?):

t = template.Template(my_model.description)
my_string = t.render(template.Context(template_dict))

(Также может быть полезно взглянуть на код веб-приложения для template.py )

0 голосов
/ 13 июля 2011

Официально поддерживаемых способов использования шаблонов, не основанных на файлах, с веб-приложением template.render()

нет. Вот способ неподдерживаемый , который работает с 1.5.1 (и вполне может не работает после этого):

class StringTemplate(webapp.RequestHandler):
  def get(self):
    import django.template
    mytemplate = "<html>...</html>"
    t = django.template.Template(mytemplate)
    fake_path = os.path.abspath("main.py") # or any uploaded file
    template.template_cache[fake_path] = t
    self.response.out.write(template.render(fake_path, {})

app.yaml используется, потому что кэш шаблона использует абсолютный путь к шаблону в качестве ключа, поэтому любой реальный файл будет действовать как поддельный шаблонисточник.Но это деталь реализации, которая может измениться.

...