App-Parameter 是一个非常简单的 Django 应用程序,用于将应用程序的参数保存在数据库中。
项目描述
Django 应用程序参数
App-Parameter 是一个非常简单的 Django 应用程序,用于将一些应用程序的参数保存在数据库中。用户可以在运行时更新这些参数(无需重新部署或重新启动)。它可用于存储网站的标题或默认电子邮件加速器...
安装
pip install django-app-parameter
设置
- 将“django_app_parameter”添加到您的 INSTALLED_APPS 设置中,如下所示:
INSTALLED_APPS = [
...
"django_app_parameter",
]
如果您希望全局参数在模板中可用,请设置提供的上下文处理器:
TEMPLATES = [
...
"OPTIONS": {
"context_processors": [
...
"django_app_parameter.context_processors.add_global_parameter_context",
],
},
]
-
运行
python manage.py migrate
以创建 django_app_parameter 的表。 -
启动开发服务器并访问http://127.0.0.1:8000/admin/以创建参数(您需要启用 Admin 应用程序)。
用法
添加新参数
使用管理界面添加参数。您可以使用“slug”字段访问代码中的参数。蛞蝓在第一次保存时构建:slugify(self.name).upper().replace("-", "_")
.
例子:
self.name ==> self.slug
blog title ==> BLOG_TITLE
sender e-mail ==> SENDER_E_MAIL
##weird@Na_me ==> WERIDNA_ME
有关更多信息,请参阅Django 的 slugify 函数。
python代码中的访问参数
您可以在代码中的任何位置读取参数:
from django.views.generic import TemplateView
from django_app_parameter import app_parameter
class RandomView(TemplateView):
def get_context_data(self, **kwargs):
kwargs.update({"blog_title": app_parameter.BLOG_TITLE})
return super().get_context_data(**kwargs)
如果您尝试读取不存在的参数,则会引发 ImproperlyConfigured 异常。
模板中的访问参数
您还可以从每个模板访问“全局”参数:
<head>
<title>{{ BLOG_TITLE }}</title>
</head>
A 使参数全局化,只需要在admin中勾选is_global即可。
使用管理命令批量加载参数
提供管理命令,让您轻松加载新参数:load_param
.
它将创建或更新,匹配的关键是 SLUG。
它接受 3 个参数:file、json 和 no-update。
选项 --file
添加提供的文件中列出的所有参数。
load_param --file /path/to/json.file
文件内容示例:
[
{"name": "hello ze world", "value": "yes", "description": "123", "is_global": true},
{"slug": "A8B8C", "name": "back on test", "value": "yes", "value_type": "INT" }
]
您可以在此处将所有可用属性添加到 json:
- 姓名
- 蛞蝓
- 值类型
- 价值
- 描述
- is_global
如果没有提供 slug,它将被构建。默认 value_type 为 STR(字符串),默认 is_global 为 False。名称始终是必需的,其他属性是可选的。
选项--json
一次性添加参数。
load_param --json "[{'name': 'param1'}, {'name': 'param2'},]"
提供的 json 需要匹配与上述 --file 选项相同的规则。
您不能同时使用 --json 和 --file 。
选项 --no-update
如果已存在具有相同 SLUG 的参数,则提供此选项以禁用“更新”。它可以与 --json 和 --file 一起使用。确保在所有环境中创建所有参数并且可以与 migrate 一起执行是很有用的。它避免替换可能导致破坏环境的现有参数值。
load_param --no-update --file required_parameters.json
我在我的起始容器脚本中使用它:
#!/bin/bash
# Execute migrations
python manage.py migrate
# load new parameters if any
python manage.py load_param --no-update --file required_parameters.json
# launch webserver
gunicorn config.wsgi
享受。
以后可能会(或不会)出现的想法
- 将参数列表保存在文件中并在每个环境中自动添加它们的迁移过程
- 使用 Parameter.str(slug) 的快捷方式(跳过“对象”关键字)
- 添加新参数的管理命令
- 保存时检查值类型的正确性
- 修改历史
- 布尔和日期时间类型
如果您有新的想法想看到,请随时在此 repo 中打开一个新问题。
帮助开发
如果你想参与开发,有(只有)两个限制:
- 用黑色格式化所有代码
- 所有单元测试必须通过并且必须覆盖新代码
因为测试需要整个 django 环境,所以我使用https://github.com/Swannbm/runtest_on_dj_packages来运行它们;如果您知道更好的方法,我会全力以赴:D
为什么使用 Django-App-Parameter
因为我想尝试打包一个 Django 应用程序,并且我在大多数项目中都使用了这个应用程序,所以这似乎是个好主意。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
django_app_parameter -1.0.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0e0f102c845c9141f687714f8adde5f2a7ab001a95877878ab148324fdd67d88 |
|
MD5 | cf72c03fd38527edaaeadef23cb15c89 |
|
布莱克2-256 | ee9e458e0c7bd5eb350c3e092523619e00d3ffcaa1d292dad5d8816102815b84 |