Ne yazık ki, ilk tepkiyi yorum yapmak hiçbir yeterli bir üne sahiptir. Ama derece tatsız hata olduğunu örnekte vardır: Eğer 1 öğe tarafından her form başlatma filtreler büyümesi üzerine daha sonra filters.append (yetiremediğin) yaptığınızda. Eğer
Örnek düşünün Yeniden başlatana kadar sonucunda , kodunuz ve yavaş yavaş çalışır: Çok hızlı bir düzeltmedir
class MyBaseForm(Form):
class Meta:
def bind_field(self, form, unbound_field, options):
filters = unbound_field.kwargs.get('filters', [])
filters.append(my_strip_filter)
return unbound_field.bind(form=form, filters=filters, **options)
def my_strip_filter(value):
if value is not None and hasattr(value, 'strip'):
return value.strip()
return value
class MyCustomForm(MyBaseForm):
some_field = StringField(filters=[lambda x: x])
for i in range(100):
MyCustomForm(MultiDict({'some_field': 'erer'}))
print(len(MyCustomForm.some_field.kwargs['filters'])) # print: 101
kontrol etmek o listedeki bu filtre değil:
class MyBaseForm(Form):
class Meta:
def bind_field(self, form, unbound_field, options):
filters = unbound_field.kwargs.get('filters', [])
if my_strip_filter not in filters:
filters.append(my_strip_filter)
return unbound_field.bind(form=form, filters=filters, **options)
(WTForms bunlar fazlasıyla mevcut). Ayrıca, bu satır biraz basitleştirilebilir: 'filtreleri = unbound_field.kwargs.get ('filtreler', []) ' – ThiefMaster
@ThiefMaster sayesinde, kod örneği – Crast
FormField filtreleri alamaz gibi bu FormField'' da yapılamaz çözecektir , yani issubclass (unbound_field.field_class, FormField) ' – gdoumenc