Django-blegemiddel er en Django app til at blege og desinficere bruger HTML.
blegemiddel er en Python-modul, der tager enhver HTML input og returnerer gyldig, desinficeret HTML, der kun indeholder en tilladt delmængde af HTML-tags, attributter og stilarter. Django-blegemiddel er en Django app, der gør at bruge blegemiddel ekstremt let.
Opsætning
1. Installer django-blegemiddel via pip:
& Nbsp; pip installere django-blegemiddel
2. Tilsæt django-blegemiddel til dine INSTALLED_APPS:
& Nbsp; INSTALLED_APPS = [
& Nbsp; # ...
& Nbsp; "django_bleach«,
& Nbsp; # ...
& Nbsp;]
3. Vælg nogle fornuftige standardindstillinger for de tilladte tags, attributter og stilarter; og adfærd, når ukendte tags er stødt. Hver af disse er valgfrie, og standard til at bruge blegemiddel standardindstillinger. Se blegemiddel dokumentationen:
& Nbsp; # Hvilke HTML-tags er tilladt
& Nbsp; BLEACH_ALLOWED_TAGS = ['p', 'b', 'i', 'U', 'em "," stærk "," et "]
& Nbsp; # Hvilke HTML attributter er tilladte
& Nbsp; BLEACH_ALLOWED_ATTRIBUTES = ['href', 'title', "stil"]
& Nbsp; # Hvilket CSS egenskaber er tilladt i "stil" attributter (forudsat
& Nbsp; # stil er et tilladt attribut)
& Nbsp; BLEACH_ALLOWED_STYLES = [
& Nbsp; "font-family ',' font-weight«, »tekst-dekoration", "font-variant ']
& Nbsp; # Strip ukendte tags hvis Sandt nok, erstatte med HTML undslap tegn, hvis
& Nbsp; # False
& Nbsp; BLEACH_STRIP_TAGS = True
& Nbsp; # Strip kommentarer, eller lade dem i.
& Nbsp; BLEACH_STRIP_COMMENTS = False
4. Vælg standard-widget til blegemiddel felter. Dette er som standard django.forms.Textarea, men du vil sikkert gerne erstatte det med en WYSIWYG editor, eller noget lignende:
& Nbsp; # Brug CKEditorWidget for blegede HTML felter
& Nbsp; BLEACH_DEFAULT_WIDGET = 'wysiwyg.widgets.WysiwygWidget'
Jeg bruger Django-CKEditor i mine projekter, men hvad du bruger, er op til dig.
Anvendelse
I dine modeller
Django-blegemiddel giver tre måder at skabe bleget output. Den enkleste måde at inkludere bruger-redigerbare HTML-indhold, der automatisk desinficeres er ved hjælp af Bleachfield model feltet:
# I app / models.py
fra Django indførsel modeller
fra django_bleach.models importerer Bleachfield
class Post (models.Model):
& Nbsp; title = models.CharField ()
& Nbsp; content = Bleachfield ()
& Nbsp; # ...
Bleachfield tager følgende argumenter, at tilpasse produktionen af blegemiddel. Se blegemiddel dokumentation for deres anvendelse:
- allowed_tags
- allowed_attributes
- allowed_styles
- strip_tags
- strip_comments
Ud over de blege-specifikke argumenter Bleachfield model felt accepterer alle de normale felt attributter. Bag kulisserne, er det en TextField, og accepterer alle de samme argumenter som standard tekstfelter gør.
Den Bleachfield model felt gør brug af Bleachfield formularfelt til at gøre alt arbejdet. Det giver ingen hygiejnisering faciliteter selv. Dette betragtes som en fejl, men en ren løsning er endnu ikke blevet gennemført. Eventuelle anmodninger pull fastsættelse dette vil blive taknemmeligt anvendt. Så længe Bleachfield modelfeltet kun anvendes med Bleachfield formularfelter, vil der ikke være noget problem. Hvis dette ikke er tilfældet, kan desinficeres HTML ikke garanteres.
I dine formularer
En Bleachfield formularfelt tilbydes. Dette felt sanitises HTML input fra brugeren, og præsenterer sikker, ren HTML til din Django program. Det er her det meste af arbejdet er gjort.
I dine skabeloner
Hvis du har en peice af indhold fra et sted, der skal udskrives i en skabelon, kan du bruge blegemiddel filter:
{% Belastning bleach_tags%}
{{Some_unsafe_content | blegemiddel}}
Filteret tager ingen argumenter. . Det bruger standardindstillingerne er defineret i applikationens indstillinger
Krav :
- Python
- Django
Kommentarer ikke fundet