Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:Admin模板在页面刷新后显示旧值_Python_Django_Django Templates - Fatal编程技术网

Python Django:Admin模板在页面刷新后显示旧值

Python Django:Admin模板在页面刷新后显示旧值,python,django,django-templates,Python,Django,Django Templates,我将Python3.4与Django 1.7和PyCharm一起使用 我试图通过重写AdminSite类来扩展django管理视图 我的自定义_admin.py: class MyAdminSite(AdminSite): # Text to put at the end of each page's <title>. site_title = ugettext_lazy('Test panel title') # My custom variable

我将Python3.4与Django 1.7和PyCharm一起使用

我试图通过重写AdminSite类来扩展django管理视图

我的自定义_admin.py:

class MyAdminSite(AdminSite):
    # Text to put at the end of each page's <title>.
    site_title = ugettext_lazy('Test panel title')
    # My custom variable 
    import datetime
    srv_time = "%s" % datetime.datetime.now()


    def each_context(self):
        """
        Overriden dictionary of variables returned for
        *every* page in the admin site.
        """
        return {
            'site_title': self.site_title,
            'site_header': self.site_header,
            'srv_time': self.srv_time,
        }
它是有效的。嗯,有点。 它正确显示当前日期,但当我刷新网页时,它不会自动更新。它一直在显示过去的时光


除了重新启动调试Web服务器外,没有任何帮助-然后它会再次显示当前日期,但在页面刷新后它不会更新。

这是因为
srv\u time
被设置为“类”级属性,而不是“实例”级属性

Python为“类”级属性和“实例”级属性保留两个名称空间

当Django被加载时(当您启动服务器时),它只运行一次计算
srv_time
。这就是为什么刷新页面时不会重新计算此值的原因

您需要重写
MyAdminSite
\uuuuu init\uuuu
函数,以便在类被实例化为对象时始终运行此计算

class MyAdminSite(AdminSite):
    # Text to put at the end of each page's <title>.
    site_title = ugettext_lazy('Test panel title')
    # My custom variable 
    import datetime
    srv_time = "%s" % datetime.datetime.now()

    def __init__(self, *args, **kwargs):
        super(MyAdminSite, self).__init__(*args, **kwargs)
        self.srv_time = "%s" % datetime.datetime.now()

    def each_context(self):
        """
        Overriden dictionary of variables returned for
        *every* page in the admin site.
        """
        return {
            'site_title': self.site_title,
            'site_header': self.site_header,
            'srv_time': self.srv_time,
        }

谢谢你,你的第一种方法不管用,但第二种方法管用:)有趣。。。我想知道为什么?我没有测试第一种方法,我只是假设它可以工作:/。很高兴第二个成功了!
class MyAdminSite(AdminSite):
    # Text to put at the end of each page's <title>.
    site_title = ugettext_lazy('Test panel title')
    # My custom variable 
    import datetime
    srv_time = "%s" % datetime.datetime.now()

    def __init__(self, *args, **kwargs):
        super(MyAdminSite, self).__init__(*args, **kwargs)
        self.srv_time = "%s" % datetime.datetime.now()

    def each_context(self):
        """
        Overriden dictionary of variables returned for
        *every* page in the admin site.
        """
        return {
            'site_title': self.site_title,
            'site_header': self.site_header,
            'srv_time': self.srv_time,
        }
def each_context(self):
        """
        Overriden dictionary of variables returned for
        *every* page in the admin site.
        """
        return {
            'site_title': self.site_title,
            'site_header': self.site_header,
            'srv_time': "%s" % datetime.datetime.now(),
        }