2012-07-03 3 views
5

아이디어는 다음과 같습니다. stackoverflow와 비슷한 태그를 사용하여 jinja2에 텍스트를 보냅니다. jinja2에 텍스트를 포함하는 마크 업으로 처리하고 html로 텍스트를 굵게, 기울임 꼴로 표시하도록 jinja2에 지시하려면 어떻게합니까?jinja2 + reStructured Markup

감사합니다.

답변

3

이 작업을 수행 할 수 있어야한다 : node는 신사 2 노드

from docutils.core import publish_string 
import jinja2 

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

실제로 범위에 포함 할 수 있습니다.

+0

감사합니다. – DTailor

+0

HTML 구문 부분 만 필요한 경우 어떻게해야합니까? 그 .css 스타일을 다른 파일에 넣을 수 있습니다. – DTailor

+0

@DTailor : html의 일부를 사용할 수 있습니다. http://docutils.sourceforge.net/docs/api/publisher.html#parts-provided-by-the-html-writer – Wolph

3

나는 django-markdown 사용 해요, 그래서 필터를 사용하여이 작업을 수행 할 수있는 좋은 방법이라고 생각 :

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

같은 필터가 jinja2하지만 it should be very easy to write이있는 경우, 내가 잘 모르는 것 같아요. 이 줄 (테스트되지 않은 코드)에서 뭔가를 추측합니다.

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

이것은 작동하지만 필터는 publish_string() 대신 publish_parts() [ 'html_body']를 사용하는 것이 좋습니다. 감사! –

+0

@AdiRoiban : 나는 당신을 믿고 당신의 제안을 반영하기 위해 나의 대답을 업데이트하고 싶습니다만, publish_parts가 publish_string보다 나은 이유를 설명해 주시겠습니까? TIA. –

+0

이 코멘트 시스템은 추악합니다. 코드를 어떻게 추가합니까? "html"작성자가있는 publish_string은 머리, 스타일 가이드 및 본문을 포함하여 _whole_ HTML 문서를 만듭니다. 이 시도 : docutils.core 수입 publish_string에서 ''' 이 publish_parts publish_string (소스 = '처음', writer_name = 'HTML') publish_parts (소스 = '처음'을, writer_name = 'html로') [ 'body'] ''' –