Django : 항목을 차단하는 방법은 공백 또는 브레이크 라인 만 포함됩니다.

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

  •  13-09-2019
  •  | 
  •  

문제

나는 누군가가 내 사이트를 방문하여 양식의 공간, 브레이크 라인 만 댓글을 달고 싶지 않습니다. 이 경우 "if"명령을 어떻게 사용합니까? 답변 주셔서 감사합니다!

도움이 되었습니까?

해결책

따라서 제출 된 댓글에 공백이나 줄이 나쁘다 (즉, 공백 문자) 만 있는지 확인한 다음 해당 주석을 무시하거나 사용자에게 메시지를 표시하는지 확인하는 것입니다. 정규 표현식을 사용하여이를 수행 할 수 있습니다.

import re

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

다른 팁

보기 자체 또는 템플릿 내에서 이것을 정말로 처리하고 싶다면 확실하지 않습니다. Django의 의견 프레임 워크가있는 시간 이후로 정의 할 수 있습니다. 중재자 원치 않는 주석을 감지하려는 모든 논리를 구현할 수있는 곳.

사용 방법에 대한 좋은 예를 보려면 살펴보십시오. Barttc의 Django-Comments-Spamfighter 앱.

확실히 이것은 Django의 의견 프레임 워크를 처음에 사용해야합니다. 그렇지 않은 경우, 귀하의 댓글 메시지가 여전히 0 자 미만인 경우 양식의 검증 메소드에서 일반적으로 모든 최신 및 공백을 제거하고 확인할 수 있습니다. 파이썬의 문자열은 멋진 작은 기능을 가지고 있습니다 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