Django: Comment bloquer l'entrée comprend des espaces ou breaklines
-
13-09-2019 - |
Question
Je ne veux pas que quelqu'un visiter mon site pour commenter que les espaces que, breaklines sur la forme. Comment puis-je utiliser la commande « si » dans ce cas? Merci pour les réponses!
La solution
Alors je suppose que ce que vous voulez est de vérifier si le commentaire soumis ne comporte que des espaces ou des sauts de ligne (c.-à-caractères blancs) ou est un commentaire vide puis ignorer ce commentaire (ou afficher un message à l'utilisateur). Vous pouvez le faire en utilisant des expressions régulières:
import re
if re.search('^\s*$', comment_text)
// empty comment, do something
Autres conseils
Je ne sais pas, si vous voulez vraiment gérer cela dans la vue elle-même ou un modèle. Depuis quelque temps le cadre de commentaires de Django vous permettent de définir django-commentaires de BartTC app -spamfighter .
Certes, cela nécessite d'utiliser le cadre de commentaires de Django en premier lieu. Si vous ne le faites pas, vous pouvez dans votre méthode validate de la forme dépouiller de toutes les nouvelles lignes et espaces blancs en général et vérifier si votre message de commentaire est encore plus de 0 caractères. Les chaînes en Python ont une petite fonction bien appelé strip
pour les choses: -)
Je suppose que vous avez juste besoin d'utiliser un formulaire et ajouter une méthode propre. Je l'ai juste essayé dans une console interactive:
>>> 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']}