Pergunta

Eu não quero alguém visita o meu site para comentário que apenas espaços, linhas de quebra no formulário. Como faço para usar o comando "se" neste caso? Obrigado por respostas!

Foi útil?

Solução

Então eu acho que o que você quer é verificar se o comentário apresentado tem apenas espaços ou quebras de linha (ou seja, espaços em branco caracteres) ou é um comentário vazio e, em seguida, ignorar que o comentário (ou mostrar uma mensagem para o usuário). Você pode fazer isso usando expressões regulares:

import re

if re.search('^\s*$', comment_text)
   // empty comment, do something

Outras dicas

Eu não tenho certeza, se você realmente quer lidar com isso dentro da própria vista ou modelo. Desde quadro comentário algum tempo de Django permitem definir moderadores onde você pode implementar toda a lógica que você deseja detectar comentários indesejados.

Para um bom exemplo de como usar isso, dê uma olhada de BartTC -spamfighter aplicativo .

Com certeza isso requer a utilização comentário quadro de Django em primeiro lugar. Se você não fizer isso, você poderia, em seu método de validação da forma de tira fora todas as novas linhas e espaços em branco em geral e verificação, se sua mensagem comentário ainda maior do que 0 caracteres. Strings em Python têm um pouco agradável função chamada strip para essas coisas: -)

Eu acho que você só precisa usar um formulário e adicionar um método limpo. Eu apenas tentei-o para fora em um console interativo:

>>> 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']}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top