使用django admin仅配置和管理类型额外的设置。
项目描述
django-extra-settings
使用django admin仅配置和管理类型额外的设置。
安装
- 运行
pip install django-extra-settings
- 将
extra_settings
添加到settings.INSTALLED_APPS
- 运行
python manage.py migrate
- 运行
python manage.py collectstatic
- 重启应用程序服务器
- 只需前往管理员界面,您可以在那里
创建
、更新
和删除
设置。
使用方法
设置
所有这些设置都是可选的,如果未在 settings.py
中定义,将使用以下列出的默认值。
# the name of the installed app for registering the extra settings admin.
EXTRA_SETTINGS_ADMIN_APP = "extra_settings"
# the name of the cache to use, if not found the "default" cache will be used.
EXTRA_SETTINGS_CACHE_NAME = "extra_settings"
# a list of settings that will be available by default, each item must contain "name", "type" and "value".
# check the #types section to see all the supported settings types.
EXTRA_SETTINGS_DEFAULTS = [
{
"name": "SETTING_NAME",
"type": "string",
"value": "Hello World",
},
# ...
]
# if True, settings names will be forced to honor the standard django settings format
EXTRA_SETTINGS_ENFORCE_UPPERCASE_SETTINGS = True
# if True, the template tag will fallback to django.conf.settings,
# very useful to retrieve conf settings such as DEBUG.
EXTRA_SETTINGS_FALLBACK_TO_CONF_SETTINGS = True
# the upload_to path value of settings of type 'file'
EXTRA_SETTINGS_FILE_UPLOAD_TO = "files"
# the upload_to path value of settings of type 'image'
EXTRA_SETTINGS_IMAGE_UPLOAD_TO = "images"
# if True, settings name prefix list filter will be shown in the admin changelist
EXTRA_SETTINGS_SHOW_NAME_PREFIX_LIST_FILTER = False
# if True, settings type list filter will be shown in the admin changelist
EXTRA_SETTINGS_SHOW_TYPE_LIST_FILTER = False
# the package name displayed in the admin
EXTRA_SETTINGS_VERBOSE_NAME = "Settings"
管理员
您可以使用 EXTRA_SETTINGS_ADMIN_APP
设置在另一个已安装的应用程序组中显示设置模型管理员。
您还可以通过使用多个已安装应用程序注册设置管理员并使用 queryset_processor
参数过滤每个应用程序设置来实现更高级的控制。
:warning: 如果您执行上述任一操作,则必须为将显示
extra_settings
模型管理员的每个应用程序运行迁移(因为 django 会为代理模型创建迁移)。
管理员高级配置示例
在您的自定义应用程序 photos.admin
模块中
from extra_settings.admin import register_extra_settings_admin
register_extra_settings_admin(
app=__name__,
queryset_processor=lambda qs: qs.filter(name__istartswith="PHOTOS_"),
unregister_default=True,
)
在您的自定义应用程序 videos.admin
模块中
from extra_settings.admin import register_extra_settings_admin
register_extra_settings_admin(
app=__name__,
queryset_processor=lambda qs: qs.filter(name__istartswith="VIDEOS_"),
unregister_default=True,
)
默认情况下,"extra_settings"
应用程序有其自己的管理员应用程序组。
缓存
您可以使用 settings.CACHES["extra_settings"]
设置自定义应用程序缓存选项,否则将使用 "default"
缓存。
CACHES = {
# ...
"extra_settings": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
"TIMEOUT": 60,
},
# ...
}
默认情况下使用 "extra_settings"
缓存,如果您想使用另一个缓存,则可以使用 EXTRA_SETTINGS_CACHE_NAME
设置来设置它。
Python
您可以编程方式创建、读取、更新和删除设置
类型
这是您可能需要使用的当前支持的设置类型列表
Setting.TYPE_BOOL
Setting.TYPE_DATE
Setting.TYPE_DATETIME
Setting.TYPE_DECIMAL
Setting.TYPE_DURATION
Setting.TYPE_EMAIL
Setting.TYPE_FILE
Setting.TYPE_FLOAT
Setting.TYPE_IMAGE
Setting.TYPE_INT
Setting.TYPE_JSON
Setting.TYPE_STRING
Setting.TYPE_TEXT
Setting.TYPE_TIME
Setting.TYPE_URL
创建
from extra_settings.models import Setting
setting_obj = Setting(
name="SETTING_NAME",
value_type=Setting.TYPE_STRING,
value="django-extra-settings",
)
setting_obj.save()
读取
from extra_settings.models import Setting
value = Setting.get("SETTING_NAME", default="django-extra-settings")
更新
from extra_settings.models import Setting
setting_obj = Setting(
name="SETTING_NAME",
value_type=Setting.TYPE_BOOL,
value=True,
)
setting_obj.value = False
setting_obj.save()
删除
from extra_settings.models import Setting
Setting.objects.filter(name="SETTING_NAME").delete()
验证器
您可以定义每个设置的自定义验证器
- 验证器必须使用完整 Python 路径定义,例如
myapp.mymodule.my_validator
。 - 验证器接收单个参数(设置的值)进行调用,如果值有效,则应返回
True
,否则返回False
或None
,将引发ValidationError
。
模板
您可以在模板中检索设置
{% load extra_settings %}
{% get_setting 'SETTING_NAME' default='django-extra-settings' %}
测试
您可以在测试期间使用 extra_settings.test.override_settings
覆盖特定设置。
它可以同时作为装饰器和上下文管理器使用
from extra_settings.test import override_settings
# decorator
@override_settings(SETTING_NAME_1="value for testing 1", SETTING_NAME_2="value for testing 2")
def test_with_custom_settings(self):
pass
# context manager
def test_with_custom_settings(self):
with override_settings(SETTING_NAME_1="value for testing 1", SETTING_NAME_2="value for testing 2"):
pass
测试
# clone repository
git clone https://github.com/fabiocaccamo/django-extra-settings.git && cd django-extra-settings
# create virtualenv and activate it
python -m venv venv && . venv/bin/activate
# upgrade pip
python -m pip install --upgrade pip
# install requirements
pip install -r requirements.txt -r requirements-test.txt
# install pre-commit to run formatters and linters
pre-commit install --install-hooks
# run tests
tox
# or
python runtests.py
# or
python -m django test --settings "tests.settings"
许可证
在 MIT 许可证下发布。
支持
另请参阅
-
django-admin-interface
- 由管理员本身自定义的默认管理界面。弹出窗口被模态窗口替代。 🧙 ⚡ -
django-colorfield
- 模型中的简单颜色字段,在管理界面中有漂亮的颜色选择器。 🎨 -
django-maintenance-mode
- 维护模式开启时显示 503 错误页面。 🚧 🛠️ -
django-redirects
- 具有完全控制的重定向。 ↪️ -
django-treenode
- 可能是您基于树的抽象模型/管理器的最佳选择。 🌳 -
python-benedict
- 具有键列表/键路径支持的 dict 子类,I/O 短路(base64、csv、json、pickle、plist、查询字符串、toml、xml、yaml)以及许多实用工具。 📘 -
python-codicefiscale
- 编码/解码意大利税号 - Codifica/decodifica del Codice Fiscale。 🇮🇹 💳 -
python-fontbro
- 友好的字体操作工具 🧢 -
python-fsutil
- 为懒惰的开发者提供的文件系统工具 🧟♂️
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
django-extra-settings-0.12.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8b49c63c033197d26f1f9d1d85d89cbe0f6eaff07bcbdedfa10df0e2598289d1 |
|
MD5 | 0ef707c030c7cfb91f0bfd2e0de9eab4 |
|
BLAKE2b-256 | bebe9bfb73fbea84364c16cc7e5486dc1d5690491b4d510d11eee89e109cce95 |
django_extra_settings-0.12.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a397beb203cec76c74dfa7735254c321a20b158681436f8b93858ab121f071e2 |
|
MD5 | 6f277b1f789d6de0289ad94f76e395ec |
|
BLAKE2b-256 | 4f8692bf77920482e371f09540182c4cc090bbe421b299d3065347e4b47ffd5e |