跳转到主要内容

简单的django可重用应用程序,用于将项目设置存储在数据库中。

项目描述

https://badge.fury.io/py/django-settings.png https://api.travis-ci.org/jqb/django-settings.png?branch=master

Django可重用应用程序,用于将全局项目设置存储在数据库中。

项目设置指的是像管理员邮件、一些默认值(如默认帖子限制)等。根据类型验证值。从1.3版本开始,您可以注册自己的设置值。

支持版本

  • Python: 2.6, 2.7(Python 2.6需要importlib)

  • Django: 1.3, 1.4, 1.5

API

重要:从版本1.3开始更改,旧API仍然工作,但与它不工作缓存。

import django_settings

# getting values
# this will raise django_settings.models.Setting.DoesNotExist
# exception if value not exists
# if value is not in cache it will be cached
django_settings.get('post_limit')

# if you not sure value exists you can pass "default" parameter,
# at this point default is NOT cached
django_settings.get('post_limit', default=10)

# set values - cache is updated for "get" and "exists" method
# values are validated using setting_value model clean_fields method
django_settings.set('Email', 'admin_email', 'admin@admin.com')

# If you want to avoid validation, do this:
django_settings.set('Email', 'admin_email', 'admin@admin.com', validate=False)

# checking if value exists
django_settings.exists('admin_email')

# getting all values as a dict
django_settings.all()

安装和设置

  1. 使用pip安装它

$> pip install django-settings
  1. 将“django_settings”添加到您的INSTALLED_APPS

INSTALLED_APPS = (
    'django.contrib.contenttypes',  # contenttypes framework is required

    # ...

    'django_settings',

    # ...
)
  1. 如果您想添加自己的设置模型,请将它们添加到您的应用程序模型文件中,并使用django_settings API进行注册

# <project>/<app>/models.py
from django.db import models


# ... your application models


import django_settings

class Text(django_settings.db.Model):
    value = models.TextField()
    class Meta:
        abstract = True   # it's IMPORTANT - it need to be abstract
django_settings.register(Text)

请记住将模型定义为抽象的,这是非常重要的,因为Django对待模型类的方式。

可以通过项目settings.py文件设置一些默认值。这些设置将仅在它们尚未存在于数据库中时设置。

DJANGO_SETTINGS = {
   'application_limit': ('Integer', 2),
   'admin_email': ('String', 'admin@mail.com'),
}

使用以下命令将DJANGO_SETTINGS导入数据库:

./manage.py settings_initialize

默认的django-settings超时设置为1天,但可以在您的项目设置中更改。

DJANGO_SETTINGS_TIMEOUT = 60 * 60 * 10  # 10 hours

超时允许您为每个设置定义缓存超时时间(以秒为单位)。在给定时间后,值将过期,并且每个值都将重新计算(在您请求给定设置时)。由于Django的默认缓存超时(5分钟):https://docs.django.ac.cn/en/dev/topics/cache/#cache-arguments

设置类型

内置设置类型:电子邮件、整数、字符串、正整数

管理员

您可以通过您的管理员界面操作设置。

变更日志

1.3.12 - 修复了post sync db设置初始化问题

  • 初始信号已移动到模型中

1.3-11 - 修复了几个错误

  • “清除设置缓存”管理员操作异常已修复 [#12]

  • 修复了管理员设置版编辑缓存更新错误

  • “syncdb”信号回调已修复,因此它不会在每次syncdb时重新初始化设置 [#14]

1.3-8 - 修复了DJANGO_SETTINGS_TIMEOUT问题

  • 现在可以通过项目设置进行配置

1.3-7 - 进行了几个改进和错误修复

  • 添加了“all”功能

  • 管理员设置添加/编辑回调:“DataAPI._set_cache_for”错误修复。

  • 添加了设置超时定制(默认为1天)

1.3-4 - 修复了setup.py错误

1.3-3 测试版 - python & django各种版本兼容性更改

1.3-2 测试版 - 修复了几个错误,包括处理缓存Unicode键,添加了测试

1.3-1 测试版 - 修复了admin render_change_form

1.3 测试版 - 自1.0版本以来进行了几个改进

  1. 设置名称现在需要是唯一的(向下不兼容)

  2. 从现在起,您可以使用django_settings.register函数使用自己的类型扩展设置

  3. 引入了具有缓存机制的新API

  4. 改进了管理界面,添加了仅用于该包的清除缓存键的操作

为核心功能添加了一些测试。

向下不兼容的更改

django_settings.models.Setting的名称现在需要是唯一的,但是1.3版本仍然允许它不是唯一的。只需将应用设置DJANGO_SETTINGS_UNIQUE_NAMES设置为False(默认为True)即可。

作者

贡献者

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分发

django-settings-1.3.12.tar.gz (10.7 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面