FormenCode التحقق من صحة: الكلمات مقسومة على فاصلة

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

  •  29-09-2019
  •  | 
  •  

سؤال

كيفية التحقق من صحة الكلمات مقسومة على فاصلة بواسطة formencode؟

شيء من هذا القبيل:

"foo1, foo2, foo3" -> ["foo1", "foo2", "foo3"]
هل كانت مفيدة؟

المحلول

ربما ستحتاج مصلحة مخصصة. هذا مثال سريع:

import formencode

class CommaSepList(formencode.validators.FancyValidator):

    def _to_python(self, value, state):
        return value.split(",")

    def validate_python(self, value, state):
        for elem in value:
            if elem == "": 
                raise formencode.Invalid("an element of the list is empty", value, state) 

>>> CommaSepList.to_python("1,2,3")
['1', '2', '3']
>>> CommaSepList.to_python("1,,")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.5/site-packages/FormEncode-1.2.3dev-py2.5.egg/formencode/api.py", line 416, in to_python
    vp(value, state)
  File "myValidator.py", line 17, in validate_python
    raise formencode.Invalid("an element of the list is empty", value, state)

بالطبع ، ستحتاج إلى إضافة التحقق من الصحة الخاصة بحالة الاستخدام الخاصة بك.

نصائح أخرى

على افتراض أن كل كلمة مفصولة بفاصلة ومساحة (', '):

>>> x = "foo1, bar2, foo3"
>>> x.split(', ')
['foo1', 'bar2', 'foo3']

ثم قم بتمرير هذه القائمة إلى formencode وجعلها تفعل كل ما تحتاجه للقيام به.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top