2017-08-31 149 views
0

我为如下时间字段定义wtforms:WTForms日期时间字段的时间没有更新

stime = DateTimeField(label='Start time',validators=[validators.InputRequired()],format = "%d%b%Y %H:%M",default= datetime.now(timezone('UTC'))) 
    etime = DateTimeField(label='End time',validators=[validators.InputRequired()],format = "%d%b%Y %H:%M",default= datetime.now(timezone('UTC'))) 

在HTML页面调用下面这个字段:

<form method= POST action="{{ url_for('input_ext') }}"> 
      <table> 
       {% for field in form %} 
       <tr> 
          <td>{{ field.label }}*</td><td>{{ field }}</td> 
       </tr> 
       {% endfor %} 
      </table> 
<input id = "generate" name="generate" type=submit value=Next></form> 

瓶代码:

from flask import Flask 
from flask import render_template 
from flask import request 
from model import InputForm 

app = Flask(__name__) 
@app.route('/',methods = ['GET','POST']) 
#select interface and for selected interfaces pullup circuit info 
def provideinput(): 
    global devices 
    devices = '' 
    form = InputForm(request.form) 
    return render_template("utctime.html", form=form) 
if __name__ == "__main__": 
    app.run(debug=True,host="10.23.102.116",port=82) 

问题是,我得到UTC的时间,并没有更新到当前UTC值,只要我重新加载page.It保持相同我开始运行Python代码。 定义DateTimeField有什么错误?

为如下,仍然没有运气:

stime = DateTimeField(label='Start time(EDT)', validators=[validators.InputRequired()], format="%d%b%Y %H:%M", 
          default=datetime.today) 
    etime = DateTimeField(label='End time(EDT)', validators=[validators.InputRequired()], format="%d%b%Y %H:%M", 
          default=datetime.today) 
+0

ETIME = DateTimeField字段(标记= '结束时间(EDT)',验证器= [validators.InputRequired()],格式=“%d%B%Y%H:% M“, 默认值= datetime.today) - >像这样仍然是相同的没有改变后重新加载 – ajay

回答

0

答案是wtforms+flask today's date as a default value

有人援引这点。我不好,我在错误的地方编辑。

更改为:

stime = DateTimeField(label='Start time(EDT)',validators=[validators.InputRequired()],format = "%d%b%Y %H:%M",default= datetime.utcnow) 
    etime = DateTimeField(label='End time(EDT)',validators=[validators.InputRequired()],format = "%d%b%Y %H:%M",default= datetime.utcnow)