在web.py中呈现HTML

时间:2011-08-08 09:03:14

标签: python html templates web.py

我正在处理类似维基百科的项目。我可以使用markdown将文本文件转换为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代码)传递给article_files.html。身体看起来像,

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

问题是,身体显示原样。这就是html代码在屏幕上打印出来的所有标签。我想渲染这个html代码(正文),


欢迎 Ajay

我的HTML文件是:

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

2 个答案:

答案 0 :(得分:12)

默认情况下,在web.py模板中启用HTML转义功能。要将其关闭,请在变量名前加上冒号:

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

确保潜在恶意用户无法将任意HTML提供给未转义的模板。

答案 1 :(得分:2)

您需要指定发送到浏览器的日期的mime type,否则它不知道如何显示它。

您可以将following line添加到您的函数中来执行此操作:

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