Пирамида, хамелеон и рендеринг шаблонов

#python #pyramid #chameleon #template-tal

#python #пирамида #хамелеон #шаблон-tal

Вопрос:

Я начал проект с веб-фреймворка Python «Пирамида», используя механизм шаблонов «хамелеон».

Я новичок в этих фреймворках, но я должен использовать его для клиента.

Я следую инструкциям, чтобы установить фреймворк, затем я начал кодировать, просто для целей обучения!

Мое первое приложение было глупым, простым CRUD-приложением.

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

в моем __init__.py у меня есть для каждого представления следующий код:

config.add_view(‘myenglishdictionary.views.modify’,route_name=’modify_route’,renderer=’templates/base.pt’)

base.pt является основным шаблоном с верхним и нижним колонтитулами и div со следующим кодом:

 <div>${body}</div>
  

в моем файле view.py каждый вид имеет 2 строки, как показано ниже:

 body = render('templates/list.pt',{'list':list ,'project':'myProject'}, request=request)
return {'body':body}
  

и в моем list.pt существует контент, который будет встроен в base.pt

Казалось, все работает хорошо. Но после обновления библиотек теперь я не могу правильно видеть свой шаблон.

Вместо фактического html-кода есть html-объекты:

  amp;<div class="clear"amp;>amp;</divamp;>
  

итак, очевидно, что страница выглядит не очень хорошо.

Проблемы, по-видимому, заключаются в методе рендеринга, поскольку html base.pt шаблон отображается правильно.

Ответ №1:

Использование ${} синтаксиса позволяет избежать включенного текста по умолчанию (для защиты от атак с использованием XSS-инъекций).

Вместо этого используйте structure: префикс, чтобы указать механизму рендеринга не экранировать ваш текст:

 <div>${structure: body}</div>