2011-08-08 71 views
12

我正在处理一个类似维基百科的项目。我可以使用降价将文本文件转换为html代码。我的问题是,我想呈现在HTML文件中的这个HTML代码。这是我的代码,在web.py中渲染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代码(机构)一样,


欢迎阿贾伊

我的HTML文件是:

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

回答

11

HTML转义是默认的Web。 py模板。要关闭它,用冒号前面加上变量名:

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

确保有没有办法让潜在的恶意用户养活任意HTML到您的转义模板。

+0

感谢海尔吉。代码现在工作得很好。 –

2

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

您可以通过添加following line到你的函数做到这一点:

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

我很确定阿贾伊正在谈论的是_body_(即“h1”和“p”)逐字呈现,而不是整个页面。 – Helgi

+0

不知道为什么downvotes。即使只是身体没有被渲染,这仍然是有帮助的。解决了我的问题,upvoted。 – sqram