Python Django:Admin模板在页面刷新后显示旧值
我将Python3.4与Django 1.7和PyCharm一起使用 我试图通过重写AdminSite类来扩展django管理视图 我的自定义_admin.py: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
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(),
}