Jinja2 automatycznie wymyka się wszystkim znacznikom HTML, ale nie chcę uciec od tagów (takich jak img
, b
i kilka innych). Jak mogę to zrobić?Jinja2 ucieka wszystkim HTML, ale img, b, itp.
Odpowiedz
Możesz napisać własny filtr. scrubber library jest całkiem niezły w oczyszczaniu HTML. Filtr będzie musiał owinąć zwracany ciąg w jinja2.Markup
, aby szablon nie uciekł z niego ponownie.
Edit: a przykładowy kod
import jinja2
import scrubber
def sanitize_html(text):
return jinja2.Markup(scrubber.Scrubber().scrub(text))
jinja_env.filters['sanitize_html'] = sanitize_html
będziemy chcieli przeprowadzić analizę danych wejściowych o poddaniu przy użyciu białej listy podejście - istnieje kilka dobrych przykładów in this question i viable options tam.
Gdy już to zrobisz, możesz zaznaczyć wszystkie zmienne, które zawierają kod HTML, który nie powinien być uciekł z filtrem safe
:
{{comment|safe}}
Biblioteka Bleach może zrobić bardzo dobrze.
Na przykład, zakładając, że zmienna „jinja_env” jest w zakresie:
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
Następnie w szablonie może masz coś takiego:
<p>{{ my_variable|clean(tags=['img', 'b', 'i', 'em', 'strong'], attributes={'img': ['src', 'alt', 'title', 'width', 'height']}) }}</p>
Można również użyć wymagalne (zamiast lista) w atrybutach, pozwalająca na dokładniejsze sprawdzanie atrybutów (np. sprawdzanie, czy src udostępnia poprawny adres URL). Dokumentacja pokazuje an example.
- 1. HTML/CSS - Umieść img na górze img?
- 2. jinja2: zmienne ucieczki html
- 3. Atrybut HTML img "uzupełnij"
- 4. HTML szablon za pomocą Jinja2 - Lost
- 5. Uwzględnij plik html w szablonie Jinja2
- 6. UrlPathEncode nie ucieka ze spacjami
- 7. Freemarker ucieka przed freemarkerem
- 8. separator logstash nie ucieka
- 9. JavaScript - Uzyskaj rozmiar w bajtach z HTML img src
- 10. Kopiowanie img z HTML w Java Swing
- 11. Jak zbudować tabelę HTML z prostą pętlą for w Jinja2?
- 12. Grupa kolumnie A, ale porównując kolumna B
- 13. Jak można refaktoryzować JavaScript, HTML, CSS, itp?
- 14. Jak wypisać nazwę jednostki HTML ( , <, >, itp.)
- 15. Jinja2 If Statement
- 16. Czy istnieje sposób na wyczyszczenie html, który produkuje jinja2?
- 17. "odmówić wszystkim" z niestandardową wiadomością?
- 18. Jak działa tag rekurencyjny Jinja2?
- 19. Przekazywanie kodu HTML do szablonu za pomocą Flask/Jinja2
- 20. jak wczytać plik HTML 5 z obrazu (<img>)?
- 21. Wyświetlanie obrazów z magazynu Firebase w znacznikach html img
- 22. Jak zachować proporcje przy użyciu znacznika HTML IMG
- 23. Numpy wydajny jeden przeciwko wszystkim
- 24. HTML/Javascript usunąć dane z img atrybutu src
- 25. Rodzaj minBy [B] (f: ((A, B)) ⇒ B) (ukryte CMP: Kolejność [B]): (A, B)
- 26. HTML/JavaScript - Zdalne img src z automatycznym http/https prefiks
- 27. Jak XML ucieka z Apache Velocity?
- 28. Scala XML: brace ucieka w atrybuty
- 29. Koniec linii (nowa linia) ucieka w bashu
- 30. jQuery wybierz img z src