自定义链接
自定义链接允许用户在NetBox对象视图中显示任意的外部内容的超链接。这对于在NetBox之外的系统中交叉引用相关记录非常有用。例如,您可以在设备视图上创建一个自定义链接,该链接链接到网络监控系统(NMS)中的当前设备。
自定义链接是通过导航到Customization > Custom Links来创建的。每个链接与特定的NetBox对象类型(站点、设备、前缀等)关联,并将显示在相关视图上。每个链接都有显示文本和URL,可以使用Jinja2模板代码通过变量object
和自定义字段object.cf
在链接中包含来自正在查看的NetBox项目的数据。
例如,您可以定义如下链接:
- 文本:
查看NMS
- URL:
https://nms.example.com/nodes/?name={{ object.name }}
查看名为Router4的设备时,此链接将呈现为:
<a href="https://nms.example.com/nodes/?name=Router4">查看NMS</a>
自定义链接显示为页面右上角的按钮。可以使用数字权重来影响链接的排序,并且每个链接可以单独启用或禁用。
警告
自定义链接依赖于用户创建的代码来生成任意的HTML输出,这可能是危险的。只授予受信任的用户创建或修改自定义链接的权限。
上下文数据
在渲染自定义链接的文本或URL时,可以在模板内使用以下上下文数据。
变量 | 描述 |
---|---|
object |
正在显示的NetBox对象 |
debug |
一个布尔值,指示是否启用了调试 |
request |
当前的WSGI请求 |
user |
当前用户(如果已验证) |
perms |
分配给用户的权限 |
虽然上面列出的大多数上下文变量将具有一致的属性,但当链接呈现时,对象将是一个特定对象类型的实例。不同的模型具有不同的字段和属性,因此您可能需要一些研究来确定特定对象类型的模板内可用于使用的属性。
通常,检查对象的REST API表示是确定可用属性的方便方法。您还可以直接参考NetBox源代码以获取全面的属性列表。
条件渲染
只有渲染为非空文本的链接才会包含在页面上。您可以使用条件的Jinja2逻辑来控制渲染链接的条件。
例如,如果您只想为活动设备显示一个链接,您可以将链接文本设置为
{% if object.status == 'active' %}查看NMS{% endif %}
只有查看状态不为"active"的设备时,链接才不会显示。
再举一个例子,如果您希望仅显示属于特定制造商的设备,可以执行以下操作:
{% if object.device_type.manufacturer.name == 'Cisco' %}查看NMS{% endif %}
只有查看制造商名称为"Cisco"的设备时,链接才会显示。
链接组
可以指定组名称以将链接组织成组。具有相同组名的链接将呈现为单个按钮下的下拉菜单,按钮上带有组的名称。
表列
自定义链接也可以包括在对象表中,方法是从表格配置表单中选择所需的链接。当显示时,每个链接将呈现为相应对象的超链接。当导出(例如作为CSV数据)时,每个链接只会呈现其URL。