2012-01-23 9 views

उत्तर

11

आप अपना खुद का फ़िल्टर लिख सकते हैं। scrubber library एचटीएमएल की सफाई में बहुत अच्छा है। फ़िल्टर को jinja2.Markup में लौटाई गई स्ट्रिंग को लपेटने की आवश्यकता होगी ताकि टेम्पलेट इसे फिर से नहीं बचाएगा।

संपादित करें: एक कोड उदाहरण

import jinja2 
import scrubber 

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

jinja_env.filters['sanitize_html'] = sanitize_html 
11

आप एक सफेद सूची दृष्टिकोण का उपयोग कर प्रस्तुत करने पर इनपुट पार्स करने के लिए चाहता हूँ - वहाँ कई अच्छे उदाहरण in this question और वहाँ बाहर viable options हैं।

{{comment|safe}} 
6

Bleach पुस्तकालय बहुत अच्छी तरह से कर सकते हैं:

एक बार जब आप किया है कि, आप किसी भी चर कि HTML कि safe फिल्टर का उपयोग नहीं किया जाना चाहिए शामिल होंगे चिह्नित कर सकते हैं।

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

तुम भी एक प्रतिदेय उपयोग कर सकते हैं (के बजाय:

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 

फिर एक टेम्पलेट में आप की तरह कुछ हो सकता है:

उदाहरण के लिए, चर 'jinja_env' मानते हुए दायरे में है एक सूची) गुणों में, विशेषताओं की अधिक पूर्ण प्रमाणीकरण की अनुमति देता है (उदाहरण के लिए उस src को सत्यापित करना एक वैध यूआरएल प्रदान करता है)। दस्तावेज़ीकरण an example दिखाता है।

संबंधित मुद्दे