2011-08-08 41 views
12

Tôi đang xử lý với một dự án giống Wikipedia. Tôi có thể chuyển đổi tập tin văn bản sang mã html bằng cách sử dụng markdown. Vấn đề của tôi là, tôi muốn hiển thị mã html này trong một tệp html. Đây là mã của tôi,Hiển thị HTML trong web.py

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) 

Tôi đang chuyển article_name và nội dung (mã html) tới article_files.html. Cơ thể trông giống như,

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

Vấn đề là, cơ thể hiển thị như cũ. Đó là mã html được in trên màn hình với tất cả các thẻ. Tôi muốn làm cho mã này html (cơ thể) như thế nào,

Hải
Chào mừng Ajay

tập tin HTML của tôi là:

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

Trả lời

11

HTML thoát là theo mặc định trong web. py mẫu. Để tắt nó đi, thêm vào trước tên biến với dấu hai chấm:

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

Hãy chắc chắn rằng không có cách nào cho một người sử dụng có khả năng độc hại để nuôi HTML tùy ý vào mẫu unescaped của bạn.

+0

Cảm ơn Helgi. Mã hoạt động rất tốt ngay bây giờ. –

2

Bạn cần chỉ định mime type của ngày bạn đang gửi tới trình duyệt, nếu không, nó không biết cách hiển thị nó.

Bạn có thể làm điều này bằng cách thêm following line đến chức năng của bạn:

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

Tôi khá chắc chắn Ajay đang nói về _body_ (tức là, 'h1' và' p') được hiển thị nguyên văn, chứ không phải toàn bộ trang. – Helgi

+0

Không chắc chắn lý do tại sao các downvotes. Ngay cả khi cơ thể không được trả lại, điều này vẫn hữu ích. Giải quyết vấn đề của tôi, upvoted. – sqram

Các vấn đề liên quan