0
我有一個問題的數據庫,其中一些問題需要特殊驗證。所以,我在我的模型中添加了一個名爲py_validation的字段,當這些問題得到解答時,我通過運行存儲在py_validation中的代碼來驗證它們。當我將代碼粘貼到interpereter,它工作正常,但是當我將它傳遞到EXEC,它失敗,出現錯誤:爲什麼exec()被調用時會出現語法錯誤?
Traceback (most recent call last):
File "<string>", line 2, in <fragment>
invalid syntax: <string>, line 2, pos 31
代碼如下:
# This code relies on the field type being a char field
if len(value.split('\n')) < 5:
raise ValidationError(_("You must specify at least 5 widgets, one per line"))
super(CharField, self).validate(value)
我打電話它使用:
def do_py_validate(field, value):
exec field.py_validation
因此變量值在執行時在本地範圍內。不太合理的代碼工作得很好,當這樣執行時會釋放。