HTMLParser unescape не проходит ‹ или › не экранируется в приложении Pyramid

Название говорит о многом. Python3.3 с использованием фреймворка приложений Pyramid (-s starter). Добавление этого кода в контроллер views.py:

from HTMLParser import HTMLParser
h = HTMLParser()

string = '<p>Hi there!</p>';
return dict( string=h.unescape(string) )

где return dict(..) передается шаблону с простым маркером ${string} в нем, результатом в веб-браузере всегда будет отображение угловых скобок вместо того, чтобы отображать их как теги. То есть на веб-странице отображается: ‹p›Привет!‹/p›

Мне нужно иметь возможность передавать пользовательский контент (html с разметкой) в шаблон, чтобы он отображался встроенным. Что еще мне нужно сделать?


person Erik    schedule 21.11.2013    source источник
comment
Что это HTMLParser? В Python 3.3 есть класс HTMLParser, который помещен в модуль html.parser, а не HTMLParser, и он выполняет нет метода unescape...   -  person Piotr Dobrogost    schedule 22.11.2013
comment
@PiotrDobrogost: Скорее всего, это Python 2. Метод .unescape() общеизвестно недокументирован; он все еще присутствует в Python 3.3.   -  person Martijn Pieters    schedule 22.11.2013
comment
Метод .unescape() состоит в том, чтобы превратить объекты HTML обратно в обычные символы, и он полностью ортогонален тому, что вы хотите; пометить строки безопасными для включения в ваш шаблон.   -  person Martijn Pieters    schedule 22.11.2013
comment
Какой язык шаблонов вы используете для отображения этих строк?   -  person Martijn Pieters    schedule 22.11.2013
comment
Да, у меня 2.7.   -  person Erik    schedule 23.11.2013


Ответы (1)


Механизм шаблонов экранирует переменную, потому что почти каждый механизм шаблонов делает это.

Вам нужно структурировать свои шаблоны, чтобы не избежать переменных. Это отличается от мако, хамелеона и т. д.

IIRC, эшафот starter использует шаблоны .pt Chameleon.

Если это то, что вы используете, этот другой вопрос StackOverflow полностью отвечает на ваш вопрос: Python Язык шаблонов Pyramid & Chameleon экранирует HTML

person Jonathan Vanasco    schedule 22.11.2013