在django管理中存储和编辑全局变量的最佳方式是什么



在django管理中存储和编辑全局变量的最佳方式是什么,比如下面的内容,或者还有其他更快或更好的方法?models.py:

from django.db import models
class Section(models.Model):
    percent = models.PositiveSmallIntegerField(u'Percent')
    some_variable = models.PositiveSmallIntegerField(u'Some_variable')

admin.py:

from app.models import Settings
class Settings(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': ('percent', 'some_variable')
        }),
    )

像这样的上下文处理器:

from app.models import Settings
def settings(request):
    settings = Settings.objects.all()[0]
    from django.conf import settings
    return {
        'PERCENT':     settings.percent,
        'SOME_VARIABLE': settings.some_variable,
    }

我有一个用于此任务的应用程序,请访问https://github.com/barbuza/dbconfig

与您的方式唯一的区别是,我建议将配置部分描述为表单,而不是模型

它还支持缓存,因此您的代码在配置值的每次读取操作中都不会接触数据库

如果没有所有细节,很难确定"最佳方式",但您的解决方案会起作用,可能会满足您的需求。有几个缺点是:

  1. 您只能处理percents
  2. 每次读取设置时,都需要数据库调用

我总是建议在发明之前先找到一些东西,而且有一款新的应用程序可以以更通用的方式做一些类似的事情。django-setman(不是这个名字的粉丝。还有一个更有经验的应用程序,叫做live-settings,我也玩过。

最新更新