2011-08-08 69 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