我用Django搭建了一个库存管理系统,当我销售一些产品时,我需要检查系统中是否有足够的产品。我在models.py中重写了保存函数,当数量小于0时引发了一个异常。我想获取异常并在views.py中显示。但是,当引发异常时,没有在web上显示详细信息。我应该怎么做,或者是否有其他方法来解决我的需求?
代码如下:
# views.py
def custom_exception_handler(request, exception):
if isinstance(exception, ValueError):
import pdb; pdb.set_trace()
error_message = str(exception)
return render(request, '500.html', context={'error_message': error_message}, status=500)
x
# models.py
def save(self, *args, **kwargs):
obj = Stock.objects.get(id=self.stock_id.id)
left_quantity = obj.quantity - self.quantity
if left_quantity < 0:
raise ValueError('No enough inventory')
defaults = {'quantity': left_quantity, 'update_time': self.consume_time}
for key, value in defaults.items():
setattr(obj, key, value)
obj.save()
super(RepairOutStock, self).save(*args, **kwargs)
# settings.py
handler500 = 'spare_parts.views.custom_error_view' # 500 error
# templates/500.html
<!DOCTYPE html>
<html>
<h2>{{ error_message }}</h2>
</html>
的数据
1条答案
按热度按时间o7jaxewo1#
将此代码从设置文件移动到根URLconf文件。
字符串
在URLconf中指定如下所示的处理程序(在其他任何地方设置它们都没有效果)。
Django文档-自定义错误视图
请注意,您指定为处理程序的每个视图都应该以某种方式运行。