django-extra-settings
仅使用Django Admin进行配置和管理键入的额外设置。
安装
- 运行
pip install django-extra-settings - 将
extra_settings添加到settings.INSTALLED_APPS - 运行
python manage.py migrate - 运行
python manage.py collectstatic - 重新启动您的应用程序服务器
- 只需转到可以
create,update和delete设置的管理员即可。
用法
设置
所有这些设置都是可选的,如果未在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"芹菜
警告
当将芹菜的autodiscover_tasks与force=True一起使用时,它会触发一个激进的任务发现,该发现在完全初始化之前访问Django设置。此过早访问可防止django-extra-settings正确设置其默认配置值。更多信息在这里。
行政
您可以使用EXTRA_SETTINGS_ADMIN_APP设置在另一个安装的应用程序组中显示设置模型管理员。
您还可以通过使用多个已安装的应用程序注册设置管理员并使用queryset_processor参数过滤每个应用程序设置来具有更高级的控件。
配x 如果您执行以上任一项操作,则必须为每个应用程序运行将在其管理员中显示extra_settings模型管理员的迁移(因为Django甚至为代理模型创建迁移) 。
管理员高级配置示例
在您的自定义应用程序photos.admin中。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或NoneaValidationError会提高。
模板
您可以在模板中检索设置:
{% 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://git**hub*.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许可发布。
支持
- 在Github上明星这个项目
- 在Github上关注我
- ?在蓝调上跟随我
- ?在Github上赞助我
参见
django-admin-interface默认的admin界面可由管理员本身自定义。弹出窗口被模式代替。 ??django-cache-cleaner使用管理面板或管理命令轻松清除整个缓存或单个缓存。 ?django-colorfield的简单颜色字段,在管理员中具有不错的颜色挑选。 ?django-maintenance-mode- 显示维护模式打开时显示503错误页面。 ?django-redirects完全控制的重定向。 ↪️django-treenode可能是基于树的东西的最佳抽象模型 /管理员。 ?python-benedict钥匙列表/键盘支持,I/O捷径(Base64,CSV,JSON,PICKLE,PLIST,PLIST,QUERY-String,Toml,XML,Yaml)和许多实用程序。python-codicefiscale编码/解码意大利财政代码 - codifica/decodifica del codice Fiscale。 ????python-fontbro友好的字体操作。 ?python-fsutil懒惰开发人员的文件系统实用程序。 ?♂️
通过命令行克隆项目: