2012-07-03 40 views
5

Ý tưởng là như sau. Tôi gửi một số văn bản để jinja2 bằng cách sử dụng thẻ tương tự như stackoverflow của. Làm thế nào để tôi nói jinja2 để coi chúng như là một đánh dấu có chứa văn bản và để tạo ra văn bản in đậm, in nghiêng và vân vân trong html?jinja2 + Đánh dấu tái cấu trúc

Cảm ơn bạn.

Trả lời

3

Bạn sẽ có thể làm điều này:

from docutils.core import publish_string 
import jinja2 

html = publish_string(source=text, writer_name='html') 
node = jinja2.Markup(html) 

đâu node là nút Jinja 2 để thực sự đưa vào phạm vi của bạn.

+0

Cảm ơn bạn đã làm việc. – DTailor

+0

Tôi nên làm gì nếu tôi chỉ cần phần cú pháp html? Tôi có thể đặt kiểu .css đó trong một tệp khác. – DTailor

+0

@DTailor: bạn có thể sử dụng các phần của html: http://docutils.sourceforge.net/docs/api/publisher.html#parts-provided-by-the-html-writer – Wolph

3

tôi đang sử dụng để django-markdown, vì vậy tôi nghĩ rằng sử dụng một bộ lọc là một cách tốt đẹp để thực hiện điều này:

<div class="content">{{ article.body|rst }}</div> 

Tôi không biết nếu bộ lọc như vậy tồn tại cho jinja2 nhưng it should be very easy to write. Tôi đoán điều gì đó trong dòng này (mã chưa được kiểm tra):

from docutils.core import publish_parts 
import jinja2 

def rst_filter(s): 
    return jinja2.Markup(publish_parts(source=s, writer_name='html')['body']) 
environment.filters['rst'] = rst_filter 
+0

Công trình này ... nhưng đối với bộ lọc , thay vì publish_string() thì tốt hơn nên sử dụng publication_parts() ['html_body']. Cảm ơn! –

+0

@AdiRoiban: Tôi tin rằng bạn và muốn cập nhật câu trả lời của tôi để phản ánh đề xuất của bạn, nhưng bạn có nhớ giải thích lý do tại sao publish_parts tốt hơn publish_string không? TIA. –

+0

Hệ thống nhận xét này thật xấu xí ... làm cách nào để thêm mã? publish_string với "html" writer sẽ tạo một tài liệu _whole_ HTML, bao gồm head, styleguides và body. Hãy thử điều này: '' ' từ docutils.core nhập khẩu publish_string, publish_parts publish_string (source = 'đầu tiên', writer_name = 'html') publish_parts (source = 'đầu tiên', writer_name = 'html') ['body'] '' ' –

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