Skip to content

NautobotAppConfig

The NautobotAppConfig class is a Nautobot-specific wrapper around Django's built-in AppConfig class. It is used to declare Nautobot app functionality within a Python package. Each app should provide its own subclass, defining its name, metadata, and default and required configuration parameters. An example is below:

from nautobot.apps import NautobotAppConfig

class AnimalSoundsConfig(NautobotAppConfig):
    name = 'nautobot_animal_sounds'
    verbose_name = 'Animal Sounds'
    description = 'An example app for development purposes'
    version = '0.1'
    author = 'Bob Jones'
    author_email = 'bob@example.com'
    base_url = 'animal-sounds'
    required_settings = []
    default_settings = {
        'loud': False
    }

config = AnimalSoundsConfig

Nautobot looks for the config variable within an app's __init__.py to load its configuration. Typically, this will be set to the NautobotAppConfig subclass, but you may wish to dynamically generate a NautobotAppConfig class based on environment variables or other factors.

Required NautobotAppConfig Attributes

Name Description
author Name of app's author
author_email Author's public email address
description Brief description of the app's purpose
name Raw app name; same as the app's source directory
verbose_name Human-friendly name for the app
version Current release (semantic versioning is encouraged)

Optional NautobotAppConfig Attributes

Name Default Description
base_url Same as specified name Base path to use for app URLs
config_view_name None URL name for a "configuration" view defined by this app
default_settings {} A dictionary of configuration parameters and their default values
home_view_name None URL name for a "home" or "dashboard" view defined by this app
docs_view_name None URL name for a "documentation" view defined by this app
installed_apps [] A list of additional Django application dependencies to automatically enable when the app is activated (you must still make sure these underlying dependent libraries are installed)
max_version None Maximum version of Nautobot with which the app is compatible
middleware [] A list of middleware classes to append after Nautobot's built-in middleware
min_version None Minimum version of Nautobot with which the app is compatible
required_settings [] A list of any configuration parameters that must be defined by the user
searchable_models [] A list of model names to include in the global Nautobot search
constance_config {} Django Constance configuration parameters for settings.
Added in version 2.0.0

Support for the searchable_models and constance_config attributes were added.

Removed in version 2.0.0

Support for caching_config was removed with the removal of django-cacheops.

Note

All required_settings must be configured in PLUGINS_CONFIG in nautobot_config.py before the app can be used.

Warning

If a configuration parameter is listed in either of required_settings or constance_config, and also in default_settings, the default setting will be ignored.

NautobotAppConfig Code Location Attributes

The following NautobotAppConfig attributes can be configured to customize where Nautobot will look to locate various pieces of app code. In most cases you will not need to change these, but they are provided as options in case your app has a non-standard organizational structure.

Info

As used below, a "dotted path" is the combination of a Python module path within the app and the name of a variable within that module. For example, "template_content.template_extensions" refers to a variable named template_extensions inside a template_content module located at the root of the app.

Name Default Description
banner_function "banner.banner" Dotted path to a function that can render a custom banner
custom_validators "custom_validators.custom_validators" Dotted path to a list of custom validator classes
datasource_contents "datasources.datasource_contents" Dotted path to a list of datasource (Git, etc.) content types to register
graphql_types graphql.types.graphql_types Dotted path to a list of GraphQL type classes
homepage_layout "homepage.layout" Dotted path to a list of home page items provided by the app
jinja_filters "jinja_filters" Path to a module that contains Jinja2 filters to be registered
jobs "jobs.jobs" Dotted path to a list of Job classes
menu_items "navigation.menu_items" Dotted path to a list of navigation menu items provided by the app
secrets_providers "secrets.secrets_providers" Dotted path to a list of secrets providers in the app
template_extensions "template_content.template_extensions" Dotted path to a list of template extension classes