Джанго:Как заблокировать запись, включающую только пробелы или структурные линии

StackOverflow https://stackoverflow.com/questions/1665612

  •  13-09-2019
  •  | 
  •  

Вопрос

Я не хочу, чтобы кто-то посещал мой сайт и оставлял комментарии в форме только пробелы и разрывы.Как мне использовать команду «если» в этом случае?Спасибо за ответы!

Это было полезно?

Решение

Итак, я думаю, вам нужно проверить, содержит ли отправленный комментарий только пробелы или разрывы строк (т.пробельные символы) или является пустым комментарием, а затем игнорирует этот комментарий (или показывает сообщение пользователю).Вы можете сделать это, используя регулярные выражения:

import re

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

Другие советы

Я не уверен, действительно ли вы хотите обработать это в самом представлении или шаблоне.С некоторых пор структура комментариев Django позволяет вам определять модераторы где вы можете реализовать всю логику, необходимую для обнаружения нежелательных комментариев.

Хороший пример того, как это использовать, взгляните на Приложение django-comments-spamfighter от BartTC.

Конечно, для этого в первую очередь потребуется использовать структуру комментариев Django.Если вы этого не сделаете, вы можете в своем методе проверки формы вообще удалить все символы новой строки и пробелы и проверить, длиннее ли ваше сообщение комментария по-прежнему более 0 символов.Строки в Python имеют небольшую приятную функцию под названием strip для таких вещей :-)

Думаю, вам просто нужно использовать форму и добавить чистый метод.Я только что попробовал это в интерактивной консоли:

>>> 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']}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top