Рендеринг HTML в web.py - PullRequest
       22

Рендеринг HTML в web.py

13 голосов
/ 08 августа 2011

Я занимаюсь проектом, похожим на Википедию.Я могу конвертировать текстовый файл в HTML-код, используя уценку.Моя проблема в том, что я хочу отобразить этот HTML-код в HTML-файл.Вот мой код:

class articles:
    def GET(self):
        form_name=web.input()
        article_name=form_name.page
        article_file_path=os.path.join('articles',article_name)
        fp = open(article_file_path,'rU')
        text = fp.read()
        body = markdown2.markdown(text)
        return render.article_files(article_name, body)

Я передаю article_name и body (html code) в article_files.html.Тело выглядит так:

<h1>Hai</h1>
<p>Welcome<em>Ajay</em></p>

Проблема в том, что тело отображается как есть.То есть HTML-код печатается на экране со всеми тегами.Я хочу сделать этот HTML-код (тело), ​​как,

Hai Добро пожаловать Ajay

Мой HTML-файл:

$def with(title,content)
<html>
<head>
<title>$title</title>
</head>
<body>
    <form name="form" method="GET">
        $content
    </form>
</body>
</html>

Ответы [ 2 ]

12 голосов
/ 08 августа 2011

Экранирование HTML включено по умолчанию в шаблонах web.py.Чтобы отключить его, добавьте к имени переменной двоеточие:

<form name="form" method="GET">
    $:content
</form>

Убедитесь, что потенциально злонамеренный пользователь не может вставить произвольный HTML-код в ваши неэкранированные шаблоны.

2 голосов
/ 08 августа 2011

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

Вы можете сделать это, добавив следующая строка для вашей функции:

web.header('Content-Type', 'text/html')
...