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懒惰开发人员的文件系统实用程序。 ?♂️
