首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django form DateField初始值在Apache中未更新

Django form DateField初始值在Apache中未更新
EN

Stack Overflow用户
提问于 2015-02-28 01:43:05
回答 2查看 906关注 0票数 2

我有一个Django表单,其中包含如下所示的DateInput:

代码语言:javascript
运行
复制
Fecha = forms.DateField(widget=DateInput(format = '%Y-%m-%d'),initial=(date.today() - timedelta(1)))

这个想法是,每当你访问包含表单的模板时,它会自动显示day-1 date.In我的开发环境它作为expected.However工作,我注意到我的生产环境中有一些奇怪的东西。除非我重新启动我的DateField服务器,否则Apache初始值不会改变。例如,如果我现在重新启动Apache,我的表单将显示2015-02-26作为初始日期,并将一直保持到我再次重新启动Apache。我不确定这是与Django有关,还是与Apache配置有关。有什么建议或变通方法吗?提前感谢!

致以敬意,

Alejandro

EN

回答 2

Stack Overflow用户

发布于 2015-02-28 16:06:01

不是应该这样的吗:

代码语言:javascript
运行
复制
def get_yesterday():
    return datetime.today() - timedelta(days=1)
mydatefield = forms.DateField(widget=DateInput(format = '%Y-%m-%d'),initial=get_yesterday)

您的代码将在服务器初始化时而不是在表单初始化时计算date.today()函数。

票数 1
EN

Stack Overflow用户

发布于 2017-01-27 22:48:51

这既不是django问题,也不是Apache配置问题,而是Python如何以及何时评估代码的结果。一旦包含类的模块被导入/引入内存,就会对类属性进行评估。因此,窗体类的Fecha属性仅在应用程序启动时进行初始计算,并且在应用程序重新启动之前不会再次进行计算。

要解决这个问题,只需在视图实例化form对象时提供初始日期值,而不是在form类定义中提供。这是可行的,因为每次刷新页面时都会执行视图函数:

代码语言:javascript
运行
复制
import MyForm
def my_view(request):
    my_form_instance = MyForm(initial={'Fecha': date.today() - timedelta(1)})
    ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28771140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档