生产模式下的Django异常处理

ipakzgxi  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(117)

我用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>

的数据

o7jaxewo

o7jaxewo1#

将此代码从设置文件移动到根URLconf文件。

# settings.py
handler500 = 'spare_parts.views.custom_error_view'  # 500 error

字符串
在URLconf中指定如下所示的处理程序(在其他任何地方设置它们都没有效果)。
Django文档-自定义错误视图
请注意,您指定为处理程序的每个视图都应该以某种方式运行。

相关问题