DJANGO 配置管理
Project description
DJANGO 配置管理
依托 django-kelove-setting
模块,可快速定制 Django
应用配置,并在 Django Admin
中统一管理应用的配置信息
1.安装模块
pip install django-kelove-setting
2.启用模块
INSTALLED_APPS = [
...
'django_kelove_setting',
]
3.定制配置
你的配置类应该继承自
django_kelove_setting.setting_forms.Settings
,并设置settings_title
属性(为你的配置起一个名称)
表单字段的设置同
Django forms
,注意:不要添加不支持json
序列化的表单字段(例如:forms.FileField)
以下是一个配置示例:
from django.utils.translation import gettext_lazy as _
from django.conf import settings
from django import forms
from django_kelove_setting.setting_forms import Settings
class Demo01Settings(Settings):
"""
邮件配置
"""
settings_title: str = _('DEMO01配置')
fieldsets = (
(_('基础配置'), {
'fields': (
'EMAIL_HOST',
'EMAIL_PORT',
'EMAIL_HOST_USER',
'DEFAULT_FROM_EMAIL',
'OTP_EMAIL_SENDER',
'EMAIL_HOST_PASSWORD',
),
'classes': ('extrapretty', 'wide')
}),
(_('安全链接'), {
'fields': (
'EMAIL_USE_TLS',
'EMAIL_USE_SSL',
),
'classes': ('extrapretty', 'wide')
}),
(_('配置信息'), {
'fields': (
'settings_title',
'settings_key',
),
'classes': ('extrapretty', 'wide')
})
)
EMAIL_HOST = forms.CharField(
initial=getattr(settings, 'EMAIL_HOST', 'smtp.qq.com'),
empty_value=getattr(settings, 'EMAIL_HOST', 'smtp.qq.com'),
required=False,
label=_('邮件服务器域名'),
help_text=_('例如:smtp.qq.com')
)
EMAIL_PORT = forms.IntegerField(
initial=getattr(settings, 'EMAIL_PORT', 465),
required=False,
label=_('邮件服务器端口号,为数字'),
help_text=_('例如:465')
)
EMAIL_HOST_USER = forms.CharField(
initial=getattr(settings, 'EMAIL_HOST_USER', ''),
required=False,
label=_('发件人邮箱'),
)
DEFAULT_FROM_EMAIL = forms.CharField(
initial=getattr(settings, 'DEFAULT_FROM_EMAIL', ''),
required=False,
label=_('发件人地址'),
help_text=_('fred@example.com 和 Fred <fred@example.com> 形式都是合法的')
)
OTP_EMAIL_SENDER = forms.CharField(
initial=getattr(settings, 'OTP_EMAIL_SENDER', ''),
required=False,
label=_('一次性验证码发件人地址'),
help_text=_('留空自动使用发件人地址。fred@example.com 和 Fred <fred@example.com> 形式都是合法的')
)
EMAIL_HOST_PASSWORD = forms.CharField(
widget=forms.PasswordInput(render_value=True),
initial=getattr(settings, 'EMAIL_HOST_PASSWORD', ''),
required=False,
label=_('发件人授权码'),
help_text=_('发件人授权码不一定是邮箱密码')
)
EMAIL_USE_TLS = forms.BooleanField(
initial=getattr(settings, 'EMAIL_USE_TLS', False),
required=False,
label=_('是否启用安全链接TLS'),
help_text=_('通常端口为587 TLS/SSL是相互排斥的,因此仅将其中一个设置设置为启用即可')
)
EMAIL_USE_SSL = forms.BooleanField(
initial=getattr(settings, 'EMAIL_USE_SSL', True),
required=False,
label=_('是否启用安全链接SSL'),
help_text=_('通常端口为465 TLS/SSL是相互排斥的,因此仅将其中一个设置设置为启用即可')
)
@classmethod
def get(cls) -> dict:
data = super().get()
otp_email_sender_value = data.get('OTP_EMAIL_SENDER', '')
if not otp_email_sender_value:
otp_email_sender_value = data.get('DEFAULT_FROM_EMAIL', '')
data['OTP_EMAIL_SENDER'] = otp_email_sender_value
return data
4.启用配置
在你的
AppConfig
类中添加kelove_settings
属性,值为定制好的应用配置类list
from django.apps import AppConfig
class Demo01Config(AppConfig):
name = 'demo01'
kelove_settings = [
'demo01.kelove_settings.Demo01Settings'
]
5.后台管理
进入
Django
后台应用配置
即可进行管理 。 点击添加
按钮,可快速初始化所有应用的配置。
6.导入导出
使用
django-import-export
依赖即可可实现配置信息的导入导出功能
- 使用前需要先安装依赖
pip install django-import-export
- 将
django-import-export
添加至INSTALLED_APPS
INSTALLED_APPS = [
...
'import_export',
]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for django_kelove_setting-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d361a94a48a3bdd1c9e6561198983411b59136135a007e59cde283d750241d1f |
|
MD5 | 4c879fd1ae92d264a423e43ea9515716 |
|
BLAKE2b-256 | 826693b29637d049733fe75c87167196734e37f51190d1830334cf1c7968dd5b |