Home

Awesome

Stand With Ukraine

Django Content Settings - The Most Advanced Admin Editable Setting

Django Content Settings

The django-content-settings module is a versatile addition to the Django ecosystem, allowing users to easily create and manage editable variables directly from the Django admin panel. What sets this module apart is its capability to handle variables of any type, without limiting their complexity. Thanks to an integrated caching system, these variables can be used efficiently in code, regardless of their complexity.

For the full documentation, please visit here.

django-content-settings allows you to store variables with specific functionality in your code that can be validated and previewed in your Django admin panel. Validators, previewers, and all associated logic are defined in the setting configuration.

Preview Edit Settings

Key Features

  1. Type-Agnostic Variable Creation: Create variables of any type, making the module highly adaptable to diverse needs. Learn more about basic types and template types.
  2. Flexible Permission Model: Define custom permission rules for viewing, editing, fetching in APIs, and viewing the change history of each setting. Learn more about the available API.
  3. Preview Functionality: Preview settings before applying them, with the option to view changes directly on the site.
  4. Export & Import: Export and import configurations in bulk using the UI or command-line tools.
  5. Editability via Django Admin Panel: Seamlessly edit variables directly within the Django admin panel. See how the Django Admin interface looks.
  6. Caching System: Optimized performance ensures variable complexity does not impact execution speed. Learn more about caching and speed optimization.
  7. Extensions: Leverage a wide array of configuration options and extension points. Explore available extensions.

Additional Admin Panel Functionalities

Learn more about these features here.

How It Works

# content_settings.py

from content_settings.types.basic import SimpleString

TITLE = SimpleString("Songs", help="The title of the site")

The code above defines a variable TITLE with the type SimpleString and the default value "Songs".

$ python manage.py migrate

You can use the setting in your code without running migrations, but migrations are required to make the setting editable in the admin panel.

from content_settings.conf import content_settings

content_settings.TITLE

In a template:

<h2>{{ CONTENT_SETTINGS.TITLE }}</h2>

Learn more about accessing settings.

Quick Look

You can quickly explore the functionality using the cs_test project in the repository. Ensure you have Poetry installed.

$ git clone https://github.com/occipital/django-content-settings.git
$ cd django-content-settings
$ make init
$ make cs-test-migrate
$ make cs-test

Open http://localhost:8000/admin/ in your browser to access the Django admin panel.

What's Next?