【问题标题】:Django: How to block the entry includes only spaces or breaklinesDjango:如何阻止条目仅包含空格或断线
【发布时间】:2010-12-12 13:03:49
【问题描述】:

我不希望有人访问我的网站来评论表单上只有空格和分隔线。在这种情况下如何使用命令“if”?感谢您的回答!

【问题讨论】:

    标签: django django-views


    【解决方案1】:

    我不确定,如果您真的想在视图本身或模板中处理这个问题。一段时间以来,Django 的注释框架允许您定义moderators,您可以在其中实现您想要检测不需要的 cmets 的所有逻辑。

    有关如何使用它的好例子,请查看BartTC's django-comments-spamfighter app

    当然,这首先需要使用 Django 的评论框架。如果你不这样做,你可以在表单的验证方法中去掉所有的换行符和空格,并检查你的评论消息是否仍然长于 0 个字符。 Python 中的字符串有一个很好的小函数,叫做 strip 来处理这些事情:-)

    【讨论】:

    • 哦,不清楚的地方很抱歉。我只是举个例子。事实上,我想要的是如何在 python 代码中捕获不需要的字符。具体来说这里是空格和隔断线。
    • 在这种情况下,使用 comment_text.strip 删除所有不需要的字符或使用正则表达式(如 tomlog 所述)并将其嵌入到版主中:-)
    【解决方案2】:

    所以我猜你想要检查提交的评论是否只有空格或换行符(即空白字符)或者是空评论,然后忽略该评论(或向用户显示消息)。 您可以使用正则表达式来做到这一点:

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

    【讨论】:

      【解决方案3】:

      我猜你只需要使用一个表单并添加一个干净的方法。我刚刚在交互式控制台中尝试过:

      >>> 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']}
      

      【讨论】:

        猜你喜欢
        • 2019-09-02
        • 2015-06-09
        • 1970-01-01
        • 1970-01-01
        • 2011-06-16
        • 2013-07-22
        • 2017-09-29
        • 2012-05-19
        • 1970-01-01
        相关资源
        最近更新 更多