Python Django抑制异常?
被难以发现的不当行为所困扰。数小时后,Django似乎抑制了Python Django抑制异常?,python,django,django-forms,Python,Django,Django Forms,被难以发现的不当行为所困扰。数小时后,Django似乎抑制了AttributeError以及其他可能的异常: from django import forms class MyBaseForm(forms.ModelForm): class Meta: model = MyModel fields = ('field1', 'field2', ) … class MyForm(MyBaseForm): def clean_field1(
AttributeError
以及其他可能的异常:
from django import forms
class MyBaseForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ('field1', 'field2', )
…
class MyForm(MyBaseForm):
def clean_field1(self):
super(MyForm, self).clean_field1() # calling non-exitsting method
# instead of AttributeError exception being raised,
# following code is not executed without a warning
return self.another_field_handler('field1')
有人能解释这种令人惊讶的行为对于Django表单是否正常吗?某些链接记录在哪里?除了它没有捕获任何
属性错误之外。未调用clean_field1()
,或者super()。clean_field1
存在。@knbk如果我使用try/except包装super(MyForm,self)。clean_field1()
,则捕获AttributeError
异常并执行以下代码。如果不处理异常(如问题中所述),它将不会传播并被默默忽略。不,不会发生这种情况。如果调用MyForm().clean\u field1()
,您将得到一个AttributeError。@DanielRosemanMyForm().clean\u field1()
确实会引发AttributeError,但它会被堆栈中的某个地方吞没-日志中没有关于异常的信息,下一个视图会正确呈现。Django正在使用DEBUG=True
设置运行。我如何找出异常在哪里被沉默?您需要显示实际视图作为发生这种情况的证据。在任何表单类中都没有代码来消除这样的错误。