{% extends "baseTemplate/index.html" %} {% load static %} {% comment %} /plugins/settings/ — the plugin's opaque settings blob. The panel checks that this is a JSON object under a size ceiling and stores it. It does not interpret the contents: those belong to the plugin, which validates them itself. The editor is a textarea, not a generated form, because the panel has no schema for a third-party plugin's settings and inventing one would just be a lie about what is enforced. {% endcomment %} {% block title %}{% if missing %}Plugin not found{% else %}{{ plugin.name }} settings{% endif %}{% endblock %} {% block styles %} {% include "pluginHolder/_styles.html" %} {% endblock %} {% block content %} {% if missing %}

Plugin not found

No plugin named {{ slug }} is installed.

Back to plugins
{% else %}
{{ plugin.slug|json_script:"cpPluginSlug" }} {{ settingsJSON|json_script:"cpPluginSettings" }}

{{ plugin.name }} settings

{{ plugin.slug }} · version {{ plugin.version }}

Plugin details
Valid JSON object · of {{ maxSettingsKB }} KB

What the panel does and does not do with this

  • It checks the value is a JSON object and under {{ maxSettingsKB }} KB. Nothing else.
  • It stores it as plain JSON in the panel database. Do not put credentials here — the column is not encrypted, and anyone with database access or a panel backup can read it.
  • The plugin reads it on its next hook call through Plugin.objects.get(slug=…).settings; no restart is needed and nothing is reloaded.
  • Keys and their meanings are the plugin author's to document. The panel has no schema for them.
{% endif %} {% endblock %} {% block scripts %} {% endblock %}