Skip to content

异常

以下列出的异常类可由插件引发,以在各种情况下更改 NetBox 的默认行为。

终止请求

NetBox 提供了几个通用视图和 REST API 视图集,这些视图有助于单独或批量创建、修改和删除对象。在某些情况下,插件可能希望中断这些操作并干净地中止请求,向最终用户或 API 消费者报告错误消息。

例如,插件可以通过将接收器连接到 Site 模型的 Django pre_save 信号来禁止创建具有禁止名称的站点:

from django.db.models.signals import pre_save
from django.dispatch import receiver
from dcim.models import Site
from utilities.exceptions import AbortRequest

PROHIBITED_NAMES = ('foo', 'bar', 'baz')

@receiver(pre_save, sender=Site)
def test_abort_request(instance, **kwargs):
    if instance.name.lower() in PROHIBITED_NAMES:
        raise AbortRequest(f"Site name can't be {instance.name}!")

在引发 AbortRequest 时必须提供错误消息。这将传达给用户,并应清楚地解释请求被中止的原因,以及可能的解决方法。

考虑自定义验证规则

此异常旨在用于处理复杂的评估逻辑,并应谨慎使用。对于简单的对象验证(例如上面的虚构示例),请考虑使用自定义验证规则