【发布时间】:2018-10-10 11:46:44
【问题描述】:
我正在尝试使用 Flask 构建以下页面并收到以下错误:
NameError: name 'DateField' is not defined
下面给出的是python脚本
import pandas as pd
import psycopg2
from psycopg2 import sql
from io import BytesIO
from datetime import datetime, date
import warnings
import os
from io import BytesIO
def demo_func(name,start_date,end_date):
db_connection details
dwh_cursor = conn.cursor() # set DB Cursor
## The Query
dwh_cursor.execute(sql.SQL(
"""SELECT count(bill_id) from sales where name = {} and created_at between {} and {}""").format(
sql.Literal(name), sql.Literal(start_date), sql.Literal(end_date)))
下面给出的是view.py代码
@app.route('/page1', methods=['GET','POST'])
def carrier_scac():
form = page1Form()
if form.validate_on_submit():
name = form.name.data
start_date = DateField('Start Date', format="%Y-%m-%d",description='This is the start date of the analysis')
end_date = DateField('End Date', format="%Y-%m-%d",description='This is the end date of the Analysis')
output = demo_func(name,start_date,end_date)
return send_file(output, attachment_filename=name + ' ' + ' Details.xlsx',as_attachment=True)
return render_template('page1.html', form=form)
page1.html 的代码
<form action=""
enctype="multipart/form-data"
method="POST">
{{form.hidden_tag()}}
<table>
{{ render_field(form.name, size=50) }}
{{ render_field(form.start_date, size=20) }}
{{ render_field(form.end_date, size=20) }}
{% for subfield in form.tracking_info_field %}
{% endfor %}
<tr class="submit">
<td></td>
<td><button type="submit">Get the Report!</button>
在运行 page1.html 时出现错误
builtins.NameError
NameError: name 'DateField' is not defined
谁能指导我在上面的代码中哪里出错了。谢谢
【问题讨论】:
-
是否包含导入语句,即 from wtforms import DateField ?
-
@SarthakNegi,是的,我确实有 from wtforms.fields import DateField 。我之前忘了在我的代码中包含它..
-
不确定是否有区别,但我导入如下: wtforms import DateField ,而不是 wtforms.fields import DateField。正如 Sarthak 实际上也指出的那样。