1 Star 2 Fork 0

IT小强xqitw.cn / django-kelove-setting

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

DJANGO 配置管理

依托 django-kelove-setting 模块,可快速定制 Django 应用配置,并在 Django Admin 中统一管理应用的配置信息

Django Kelove Setting Version Python Version Django Version LICENSE

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',
]

Comments ( 0 )

Sign in for post a comment

About

快速定制django配置,统一管理配置信息 spread retract
Python
Apache-2.0
Cancel

Contributors

All

Activities

load more
can not load any more
Python
1
https://gitee.com/itxq/django-kelove-setting.git
git@gitee.com:itxq/django-kelove-setting.git
itxq
django-kelove-setting
django-kelove-setting
master

Search