DJANGO: كيفية حظر الإدخال يتضمن فقط مسافات أو خطوط بركيزة

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

  •  13-09-2019
  •  | 
  •  

سؤال

لا أريد أن يقوم شخص ما بزيارة موقعي للتعليق على أن المسافات فقط، تحضيرا على النموذج. كيف يمكنني استخدام الأمر "إذا" في هذه الحالة؟ شكرا على الإجابات!

هل كانت مفيدة؟

المحلول

لذلك أعتقد أن ما تريده هو التحقق مما إذا كان التعليق المقدم لديه فقط مسافات أو فواصل سطر (أي أحرف بيضاء) أو هو تعليق فارغ، ثم تجاهل هذا التعليق (أو إظهار رسالة للمستخدم). يمكنك القيام بذلك باستخدام تعبيرات منتظمة:

import re

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

نصائح أخرى

لست متأكدا، إذا كنت تريد حقا التعامل مع هذا ضمن عرض نفسه أو القالب. منذ بعض الوقت لإطار تعليق Django، دعك تحدد المشرفين حيث يمكنك تطبيق جميع المنطق الذي تريد اكتشاف التعليقات غير المرغوب فيها.

للحصول على مثال جميل حول كيفية استخدام ذلك، نلقي نظرة على BARTTC's 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