用于生成配置文件的django交互命令。

django-settings-custom的Python项目详细描述


django设置自定义

License: MITBuild StatusCoverage StatusPyPI versionVersions supportedSupports Wheel formatDocumentation Status

用于生成配置文件的django交互命令。

得到它

项目在pypi(https://pypi.org/project/django-settings-custom/)上

pip install django-settings-custom

安装它

要在项目中启用django_settings_custom,需要将其添加到项目中的INSTALLED_APPSsettings.py文件:

INSTALLED_APPS = (
    ...
    'django_settings_custom',
    ...
)

使用它

为目标conf.ini创建一个模板,如

[DATABASE]NAME={ USER_VALUE }HOST={ USER_VALUE }PORT={ USER_VALUE }[DATABASE_CREDENTIALS]USER={ USER_VALUE }PASSWORD={ ENCRYPTED_USER_VALUE }[DJANGO]KEY={ DJANGO_SECRET_KEY }# A constant field[LDAP]URL='ldaps://myldap'

在django设置中配置

添加settings.py文件

SETTINGS_TEMPLATE_FILE='PATH_TO_YOUR_TEMPLATE_CONFIGURATION_FILE'SETTINGS_FILE_PATH='TARGET_FOR_CONFIGURATION_FILE'

在命令行中启动

python manage.py generate_settings

或全部在命令行

python manage.py generate_settings path/to/template/settings.ini target/path/of/settings.ini

结果

命令要求用户填写模板中缺少的值:

[user@localhost a_project]$ ./manage.py generate_conf
** Configuration file generation: **

** Configuration file generation: **
Do you want to generate the secret key for Django ? (Y/n) : y
Django secret key generated

** Enter values for configuration file content **

Value for [DATABASE] NAME: database_name
Value for [DATABASE] HOST: database_host
Value for [DATABASE] PORT: 900
Value for [DATABASE_CREDENTIALS] USER: my_user
Value for [DATABASE_CREDENTIALS] PASSWORD (will be encrypted):

Writing file at /home/user/a_project/conf.ini:
Configuration file successfully generated.
[user@localhost a_project]$ 

它生成文件/home/user/a_project/conf.ini:

[DATABASE]NAME=database_nameHOST=database_hostPORT=900[DATABASE_CREDENTIALS]USER=my_userPASSWORD=JbAwLj5Zwz8lMrvcUZq5sP/v6eaUFY5E7U8Fmg63vxI=# A constant field[LDAP]URL='ldaps://monldap'[DJANGO]KEY=w)r13ne4=id9_8xdojir)3)%%5m3r$co#jwj_)4d*_%%!0+f#sro

要解密代码中的值(例如在settings.py中),可以使用django_settings_custom.encryption.decrypt

importconfigparserfromdjango_settings_customimportencryptionconfig=configparser.ConfigParser()config.read(SETTINGS_FILE_PATH)database_password=encryption.decrypt(config.get('DATABASE_CREDENTIALS','PASSWORD'))

要解密值,函数使用django secret_密钥(必须在之前设置)。

其他

如果不想使用django设置

如果不想将特定变量添加到django设置文件中,可以继承generate_settings.Command来指定命令选项:

fromdjango_settings_custom.management.commandsimportgenerate_settingsclassCommand(generate_settings.Command):settings_template_file='The/settings/template/file_path.ini'settings_file_path='The/target/settings/file_path.ini'

添加自定义标记

要添加自定义标记,可以继承generate_settings.Command,并重写方法get_value

importrandomfromdjango_settings_custom.management.commandsimportgenerate_settingsclassCommand(generate_settings.Command):@staticmethoddefget_value(section,key,value_type,secret_key):ifvalue_type=='RANDOM_VALUE':returnrandom.uniform(0,100)returnsuper(Command,Command).get_value(section,key,value_type,secret_key)

或者更复杂的例子:

fromdjango.core.management.baseimportCommandErrorfromdjango_settings_custom.management.commandsimportgenerate_settingsclassCommand(generate_settings.Command):@staticmethoddefget_value(section,key,value_type,secret_key):int_less_10=value_type=='INT_LESS_THAN_10'ifint_less_10:value_type='USER_VALUE'value=super(Command,Command).get_value(section,key,value_type,secret_key)ifint_less_10:try:value=int(value)ifvalue>=10:raiseCommandError('This field needs an int less than 10.')exceptValueError:raiseCommandError('This field needs an int.')returnvalue

Documentation

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
为什么按钮点击播放声音的方法不起作用   java如何在创建小于窗口的PGraphics对象时避免“抗锯齿效应”,然后将其放大到窗口大小?   作用域中的java Antlr check返回语句   java是否在swing中显示所有鼠标悬停事件?   编辑:JAVA(Swing):JAVA(Swing)中是否有任何功能可以像javafx中的webview一样保存Html页面   java GPS文本输入   如何使用Java SE生成多个jasper报告   swing Java ActionListener未拾取按钮   性能为什么java内置序列化比Gson差?   java JAXR使用相同路径创建多个类   java Spring MVC 3.1请求头字符编码问题[UTF8]   java从Hibernate处理的h2数据库的表中删除会损坏该表吗?   Java Mybatis多个更新语句   找不到java JUnitCore类   java扩展SpringWebFlow 2.3