Пирамида, Хамелеон и рендеринг шаблонов - PullRequest
4 голосов
/ 14 октября 2011

Я начал проект с веб-фреймворка Python 'Pyramid', используя шаблонизатор 'chameleon'.

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

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

Моим первым приложением было глупое, простое приложение 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-сущности:

 &lt;div class="clear"&gt;&lt;/div&gt;

, поэтому, очевидно, страница не 'выглядит не очень хорошо.

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

1 Ответ

6 голосов
/ 14 октября 2011

Использование синтаксиса ${} по умолчанию экранирует включенный текст (для защиты от атак внедрения XSS).

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

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