Skip to main content

App-Parameter 是一个非常简单的 Django 应用程序,用于将应用程序的参数保存在数据库中。

项目描述

Django 应用程序参数

Python 覆盖范围 版本

App-Parameter 是一个非常简单的 Django 应用程序,用于将一些应用程序的参数保存在数据库中。用户可以在运行时更新这些参数(无需重新部署或重新启动)。它可用于存储网站的标题或默认电子邮件加速器...

安装

pip install django-app-parameter

设置

  1. 将“django_app_parameter”添加到您的 INSTALLED_APPS 设置中,如下所示:
INSTALLED_APPS = [
    ...
    "django_app_parameter",
]

如果您希望全局参数在模板中可用,请设置提供的上下文处理器:

TEMPLATES = [
    ...
    "OPTIONS": {
        "context_processors": [
            ...
            "django_app_parameter.context_processors.add_global_parameter_context",
        ],
    },
]
  1. 运行python manage.py migrate以创建 django_app_parameter 的表。

  2. 启动开发服务器并访问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.tar.gz (13.5 kB 查看哈希)

已上传 source

内置分布

django_app_parameter-1.0.0-py3-none-any.whl (14.6 kB 查看哈希

已上传 py3