2015-10-28 16 views
7

Tôi biết hàm bình render_template. Tôi phải cung cấp tên tệp của mẫu. Nhưng bây giờ tôi muốn kết xuất chuỗi của một mẫu (đó là nội dung của khuôn mẫu). Điều đó có ý nghĩa. nhưng tôi không muốn giải thích tại sao. Làm thế nào tôi có thể hiển thị văn bản của mẫu đơn giản?Flask Python Hiển thị Văn bản từ Biến như render_template

+0

Chỉ cần mở tệp mẫu và trả về tệp dưới dạng chuỗi. –

+0

Nhưng nếu tôi làm điều đó (tôi đã cài đặt phần mở rộng bình-bootstrap), nó sẽ cho tôi những thứ sau: {% mở rộng "bootstrap/base.html"%} vv dưới dạng văn bản thuần túy và không được xử lý. – Faminator

+0

Đó không phải là câu hỏi của bạn? _Tôi làm cách nào để hiển thị văn bản của một mẫu đơn giản? _ –

Trả lời

17

Bạn có thể sử dụng render_template_string:

>>> from flask import render_template_string 
>>> render_template_string('hello {{ what }}', what='world') 
'hello world' 
2

bạn có thể sử dụng from_string

template = "text {{ hello }}" 
print app.jinja_env.from_string(template).render(hello='Hello') 

>> text Hello 
+1

Vì anh ấy đang sử dụng Flask anh ta chỉ có thể sử dụng 'render_template_string' (được nhập từ Flask) – ThiefMaster

+0

Tôi không thể đánh dấu cả hai câu trả lời là đúng. Câu trả lời của bạn cũng tốt;) – Faminator

-1

Taken từ What's the easiest way to escape HTML in Python.

import cgi 
rendered = render_template('template.html') 
return cgi.escape(rendered) 
+1

HTML thoát ra sao để thực hiện với câu hỏi này? – ThiefMaster

+0

Điều này trả về mẫu tệp HTML được hiển thị dưới dạng chuỗi. Các câu trả lời khác chỉ làm các chuỗi mẫu đơn giản. @ThiefMaster –

0

Trên thực tế bạn có thể gọi jinja2 làm cho chức năng trực tiếp:

jinja2.Template("I am {{ var }}").render(**paramaters) 

Khi không làm việc với bình, điều này rất hữu ích

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