Django页面缓存(数据库问题)?

时间:2011-02-24 04:25:39

标签: python django

我在Django 1.2.4中遇到了一个奇怪的问题。

我有一个页面,允许用户声明前端设置。这些设置在以下模型中表示:

class Setting(models.Model):
    """
    Maintains a key-value pair for some front-end editable setting.
    """

    class Meta:
        abstract = True

    name = models.CharField(max_length=120, primary_key=True)
    description = models.CharField(max_length=300, blank=True)

class IntegerSetting(Setting):
    value = models.IntegerField()

class ListSetting(Setting):
    value = PickledObjectField(default=lambda: list(), editable=True)

这些设置会反映在管理员更改表单中。我已覆盖模板,并按如下方式对页面进行设置:

{% extends 'admin/change_form.html' %}

{% block extrahead %}
<script type="application/javascript">
    var global= {};
    global.min_slider = {{min_slider}};
    global.max_slider = {{max_slider}};
</script>
{{ block.super }}
{% endblock %}

这些值来自管理员类:

class FooAdmin(admin.ModelAdmin):
    form = FooAdminForm

    min_max = {'min_slider': get_setting("Min Slider Value"), 'max_slider': get_setting("Max Slider Value")}

    def change_view(self, request, object_id, extra_context=None):
        extra_context = extra_context or {}
        extra_context.update(self.min_max)
        return super(FooAdmin, self).change_view(request, object_id, extra_context)

更改设置表单上的设置后,我在管理员更改表单的任何页面加载时都看不到它已更新。但是,在重新启动开发服务器后,我看到数据就好了。

这里发生了什么?我遇到了缓存问题吗?如果它在管理界面中缓存,我怎么能只为那一页禁用它?

2 个答案:

答案 0 :(得分:1)

问题在于您是在管理员的类级别定义这些。因此,在执行类定义时,即在进程启动时,它们会被评估。

将字典定义移动到change_view方法本身。

答案 1 :(得分:0)

您是否在会话中保存设置?更改设置后是否更新了会话?

(这是我几天前的问题。)