2012-07-03 25 views
5

Fikir şu şekildedir. Stackoverflow'a benzer etiketler kullanarak jinja2'ye bir metin yolladım. Jinja2’ye, bunları metin içeren bir biçimlendirme olarak ve html’de kalın, italik ve metin oluşturmak için nasıl kullanacağımı nasıl anlarım?jinja2 + yeniden Yapılandırılmış Biçimlendirme

Teşekkür ederiz.

cevap

3

Bunu yapmak mümkün olmalıdır: node Jinja 2 düğümdür

from docutils.core import publish_string 
import jinja2 

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

aslında kapsamına dahil etmek.

+0

Teşekkür ederim, işe yaradı. – DTailor

+0

Yalnızca html söz dizimi bölümüne ihtiyacım olursa ne yapmalıyım? .css stilini başka bir dosyaya koyabilirim. – DTailor

+0

@DTailor: html'nin bölümlerini kullanabilirsiniz: http://docutils.sourceforge.net/docs/api/publisher.html#parts-provided-by-the-html-writer – Wolph

3

Ben django-markdown alışkınım, bu yüzden bir filtre kullanarak bunu gerçekleştirmek için iyi bir yol olduğunu düşünüyorum:

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

böyle filtre jinja2 ama it should be very easy to write için varsa ben farkında değilim. Bu (test edilmemiş kod) satırında bir şey tahmin ediyorum:

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

Bu çalışır ... ancak filtre için publish_string() yerine publish_parts() ['html_body'] kullanmak daha iyidir. Teşekkürler! –

+0

@AdiRoiban: Cevabınızı önerilerinizi yansıtacak şekilde güncellemenize ve güncellemeye inanıyorum, ama publish_parts'ın publish_string'den daha iyi olmasının nedenini açıklar mısınız? TIA. –

+0

Bu yorum sistem çirkin ... kodu nasıl ekleyebilirim? publish_string, "html" yazısıyla baş, stil kılavuzları ve gövde dahil olmak üzere bir _whole_ HTML belgesi oluşturacaktır. Bu deneyin: docutils.core içe publish_string gelen ' , publish_parts publish_string (kaynak = 'ilk', writer_name = 'html') publish_parts (kaynak = 'ilk', writer_name = 'html') ['body'] '' –