2012-01-23 7 views

cevap

11

Kendi filtrenizi yazabilirsiniz. scrubber library, HTML'yi temizlerken oldukça iyidir. Filtrenin döndürülen dizgiyi jinja2.Markup içine sarması gerekecek, böylece şablon yeniden çıkmayacak.

Düzenleme:

import jinja2 
import scrubber 

def sanitize_html(text): 
    return jinja2.Markup(scrubber.Scrubber().scrub(text)) 

jinja_env.filters['sanitize_html'] = sanitize_html 
11

Beyaz bir liste yaklaşımla sunulması üzerine giriş ayrıştırmak isteyeceksiniz bir kod örneği - birkaç iyi örnekler in this question ve orada viable options vardır.

{{comment|safe}} 
6

Bleach kütüphane çok iyi yapabilirsiniz: Bunu yaptıktan sonra

, sen safe filtreli çıkılmamalıdır HTML içerecek herhangi bir değişken işaretleyebilirsiniz. Ayrıca çağrılabilir kullanabilirsiniz

<p>{{ my_variable|clean(tags=['img', 'b', 'i', 'em', 'strong'], attributes={'img': ['src', 'alt', 'title', 'width', 'height']}) }}</p> 

(yerine:

from bleach import clean 
from markupsafe import Markup 

def do_clean(text, **kw): 
    """Perform clean and return a Markup object to mark the string as safe. 
    This prevents Jinja from re-escaping the result.""" 
    return Markup(clean(text, **kw)) 

jinja_env.filters['clean'] = do_clean 

Sonra bir şablon içinde aşağıdaki gibi bir şey olabilir: değişken 'jinja_env' varsayarak Örneğin

, kapsam içindedir bir liste) özniteliklerde, özniteliklerin daha ayrıntılı bir şekilde doğrulanmasını sağlar (örneğin, src'nin geçerli bir URL sağladığını kontrol etme). Belgeler, an example'u gösterir.