在web.py中渲染HTML
我正在做一个类似维基百科的项目。我可以使用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)
我把文章名和内容(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 个回答
13
在web.py的模板中,HTML转义是默认开启的。这意味着如果你在模板中插入一些内容,它会自动处理这些内容,以防止恶意代码的执行。如果你想关闭这个功能,可以在变量名前加一个冒号:
<form name="form" method="GET">
$:content
</form>
要确保没有办法让可能有恶意意图的用户向你的未转义模板中输入任意的HTML代码。