Важно понимать, что и где происходит - ваше приложение Pyramid в основном представляет собой программу, которая получает текстовый BLOB-объект в качестве входного (запрос) и возвращает другой текстовый BLOB-объект в качестве выходного (ответ).Полученный браузером текстовый BLOB-ответ интерпретируется, в данном случае, как HTML-страница со всеми ее тегами сценария и т. Д. Затем браузер выполняет JavaScript, который имеет доступ только к DOM, сгенерированному из этого HTML-объекта.Тот факт, что ваше приложение Pyramid использовало шаблон Jinja2 для генерации этого BLOB-объекта, в данный момент не имеет значения.
Так что теперь вы можете видеть, что «vue.js в шаблоне jinja2» на самом деле никогда не происходит - это всегда «vue.js in HTML ", и единственное, что вам нужно, это убедиться, что ваше приложение выводит правильный HTML.
Это может быть немного проблематично в данном конкретном случае, потому что и jinja2, и vue.js используют {{...}}
в качестве синтаксиса текстовой интерполяции.Если вы посмотрите исходный код страницы в своем браузере, то увидите, что бит {{ title }}
обработан Jinja2, а vue.js его никогда не увидит.Вы в основном генерируете один шаблон из другого шаблона с похожим синтаксисом.
Я не очень знаком с Jinja2 или vue.js, но я бы попробовал следующее:
Подумайте об изменении библиотеки шаблонов на что-то, синтаксис которого не конфликтует с vue.js.Может быть, TAL или Mako.
Если вы хотите продолжать использовать Jinja2, вам понадобится какая-то функция, которая выводит разметку Vue.js из шаблона Jinja:
def vue_markup(s):
return '{{ ' + s + ' }}'
, который вы бы использовали в своем шаблоне следующим образом:
{{ vue_markup('title') }}