django-candeggina è un app Django per sbiancare e disinfettare HTML utente.
candeggina è un modulo Python che prende qualsiasi input HTML, e restituisce valido, HTML igienizzato che contiene solo un sottoinsieme permesso di tag HTML, attributi e stili. django-candeggina è un app Django che rende l'utilizzo estremamente facile candeggina.
Setup
1. Installare django-bleach via pip:
& Nbsp; pip install django-candeggina
2. Aggiungere django-candeggina ai tuoi INSTALLED_APPS:
& Nbsp; INSTALLED_APPS = [
& Nbsp; # ...
& Nbsp; 'django_bleach',
& Nbsp; # ...
& Nbsp;]
3. Selezionare alcune delle impostazioni predefinite per le etichette ammesse, attributi e stili; e il comportamento quando tag sconosciuti si incontrano. Ognuno di questi sono opzionali, e Default per utilizzare le impostazioni predefinite di candeggina. Vedere la documentazione candeggina:
& Nbsp; # Quali sono ammessi tag HTML
& Nbsp; BLEACH_ALLOWED_TAGS = ['p', 'b', 'i', 'u', 'em', 'forte', 'a']
& Nbsp; # Quali sono ammessi attributi HTML
& Nbsp; BLEACH_ALLOWED_ATTRIBUTES = ['href', 'titolo', 'stile']
& Nbsp; # Quali proprietà CSS sono ammessi in 'stile' attributi (supponendo
& Nbsp; # stile è un attributo consentito)
& Nbsp; BLEACH_ALLOWED_STYLES = [
& Nbsp; 'font-family', 'font-weight', 'text-decoration', 'font-variant']
& Nbsp; # Striscia sconosciuti tag se True, sostituirlo con HTML sfuggito personaggi se
& Nbsp; # False
& Nbsp; BLEACH_STRIP_TAGS = True
& Nbsp; commenti # Striscia, o lasciarli in.
& Nbsp; BLEACH_STRIP_COMMENTS = False
4. Selezionare il widget di default per i campi di candeggina. Questa impostazione predefinita django.forms.Textarea, ma probabilmente vorranno sostituirlo con un editor WYSIWYG, o qualcosa di simile:
& Nbsp; # Utilizzare il CKEditorWidget per i campi HTML sbiancati
& Nbsp; BLEACH_DEFAULT_WIDGET = 'wysiwyg.widgets.WysiwygWidget'
Io uso django-ckeditor nei miei progetti, ma quello che si utilizza è a voi.
Utilizzo
Nei vostri modelli
django-bleach offre tre modi di creare uscita sbiancato. Il modo più semplice di includere contenuti HTML modificabile dall'utente che viene sterilizzata automaticamente è quello di utilizzare il campo Modello Bleachfield:
# In app / models.py
dai modelli django importazione
da django_bleach.models importare Bleachfield
classe Post (models.Model):
& Nbsp; title = models.CharField ()
& Nbsp; content = Bleachfield ()
& Nbsp; # ...
Bleachfield prende i seguenti argomenti, per personalizzare l'output di candeggina. Vedere la documentazione di candeggina per il loro utilizzo:
- allowed_tags
- allowed_attributes
- allowed_styles
- strip_tags
- strip_comments
In aggiunta agli argomenti specifici candeggina, il campo Modello Bleachfield accetta tutti i normali attributi di campo. Dietro le quinte, si tratta di un TextField, e accetta tutti gli stessi argomenti di default TextFields fanno.
Il campo modello Bleachfield fa uso del campo modulo Bleachfield a fare tutto il lavoro. Esso non fornisce servizi di sanificazione sé. Questo è considerato un bug, ma una soluzione pulita non è stata ancora attuata. Verranno applicate gratitudine Eventuali richieste di pull fissaggio questo. Fintanto che il campo Modello Bleachfield viene utilizzato solo con campi di modulo Bleachfield, non ci sarà alcun problema. Se questo non è il caso, HTML igienizzato non può essere garantita.
In i moduli
Viene fornito un campo di modulo Bleachfield. Questo campo igienizza input HTML da parte dell'utente, e presenta sicuro, pulito HTML alla vostra applicazione Django. Questo è dove la maggior parte del lavoro è fatto.
In i modelli
Se si dispone di un pezzo di contenuto da qualche parte che deve essere stampato in un modello, è possibile utilizzare il filtro candeggina:
{% Load bleach_tags%}
{{Some_unsafe_content | candeggina}}
Il filtro non ha argomenti. . Esso utilizza le impostazioni di default definiti nelle impostazioni dell'applicazione
Requisiti :
- Python
- Django
I commenti non trovato