Django: come bloccare l'entrata comprende solo spazi o linee di discontinuità
-
13-09-2019 - |
Domanda
Non voglio che qualcuno visita il mio sito a commentare che solo gli spazi, linee di discontinuità sul modulo. Come si utilizza il comando "se" in questo caso? Grazie per le risposte!
Soluzione
Quindi credo che ciò che si vuole è quello di verificare se il commento presentata ha solo spazi o interruzioni di riga (vale a dire spazi bianchi o caratteri) è un commento vuoto e poi ignorare quel commento (o di mostrare un messaggio all'utente). È possibile farlo utilizzando le espressioni regolari:
import re
if re.search('^\s*$', comment_text)
// empty comment, do something
Altri suggerimenti
Non sono sicuro, se si vuole veramente a gestire questo all'interno della vista in sé o il modello. Dal commento quadro po 'di tempo di Django permette di definire moderatori in cui è possibile implementare tutta la logica che si desidera rilevare commenti indesiderati.
Per un buon esempio su come utilizzare tale, dare un'occhiata a django-commenti di BartTC -spamfighter App .
Sicuramente questo richiede l'uso di commentare quadro di Django, in primo luogo. Se non lo fai, si potrebbe nel metodo validate della forma spogliare tutti i ritorni a capo e spazi bianchi in generale e verificare, se il vostro commento messaggio è ancora più lungo di 0 caratteri. Le stringhe in Python hanno un bel po 'di funzione chiamata strip
per quelle cose: -)
Credo che hai solo bisogno di usare una forma e aggiungere un metodo pulito. Ho appena provato in una console interattiva:
>>> from django import forms
>>> class CommentForm(forms.Form):
comment = forms.CharField()
def clean_comment(self):
comment = self.cleaned_data['comment']
comment = comment.strip()
if len(comment) == 0:
raise forms.ValidationError('Comment can not be blank')
else:
return comment
>>> form = CommentForm(data={'comment': ' '})
>>> form.is_valid()
False
>>> form.errors
{'comment': [u'Comment can not be blank']}