Python Form.term.data不返回任何内容
我正在为在线词典制作一个Flask应用程序,但是我制作的FlaskForm在提交时没有返回任何内容。这是我的app.py:Python Form.term.data不返回任何内容,python,html,flask,jinja2,cjk,Python,Html,Flask,Jinja2,Cjk,我正在为在线词典制作一个Flask应用程序,但是我制作的FlaskForm在提交时没有返回任何内容。这是我的app.py: 从flask导入flask,呈现模板,url,重定向,请求 来自flask_wtf进口FlaskForm 从wtforms导入StringField、SubmitField 需要从wtforms.validators导入数据 app=烧瓶(名称) app.config['SECRET_KEY']=“bbe039da711aa33120ffe25823ae104d1daa0d
从flask导入flask,呈现模板,url,重定向,请求
来自flask_wtf进口FlaskForm
从wtforms导入StringField、SubmitField
需要从wtforms.validators导入数据
app=烧瓶(名称)
app.config['SECRET_KEY']=“bbe039da711aa33120ffe25823ae104d1daa0d8efc3e8b3ceb37a4819bf3f695”
类搜索表单(烧瓶表单):
term=StringField(标签=('Search for:'),验证器=[DataRequired()])
submit=SubmitField(标签=('Search'))
d={
"我": {
“eng”:“我,我”,
“pin”:“ng4”
},
"你": {
“eng”:“you”,
“pin”:“nyi4”
}
}
@app.route(“/”,方法=['GET','POST'])
def search():
form=SearchForm()
如果request.method==“POST”:
hanterm=form.term.data
postdata=d[hanterm]
返回render_模板(“results.html”,title=hanterm,postdata=postdata)
返回渲染模板(“index.html”,title=“Search”,form=form)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)
My index.html(包含results.html扩展的模板):
{%if title%}
烧瓶博客-{{title}
{%else%}
烧瓶博客
{%endif%}
搜索词:
{{form.csrf_token()}}
{{form.term.label(class=“form control label”)}
{{form.term(class=“form control form control lg”)}
{{form.submit(class=“btn btn outline info”)}
和my results.html:
{%extends“index.html”%}
{%block content%}
读取:{postdata[“pin”]}
中文:{postdata[“eng”]}
{%endblock%}
用户在输入字段中输入一个汉字并提交,然后将该汉字关联到hanterm
,并将其字典分配给postdata
,然后将postdata
发送到results.html,以便打印其值
如果我打字我, <代码>hanterm=我'代码>和
postdata={
“eng”:“我,我”,
“pin”:“ng4”
}
其值将打印在results.html中
然而,当我提交时,什么也没有发生。当我试图打印form.term.data时,我什么也没有得到。我以前有两条路径——一条用于主页,另一条用于结果页面,但我不断得到keyrerrors,并认为这是hanterm变量无法进入结果函数的原因(其中包含以下位:
hanterm=form.term.data
postdata=d[hanterm]
返回render_模板(“results.html”,title=hanterm,postdata=postdata)
和results.html的render_模板),所以我尝试使用全局变量、会话变量等。我应该怎么做才能解决这个问题?问题是,当Python检查
if request.method==“POST”:
如果您使用的是GET
,那么表单数据包含在请求URL中,因此您应该使用类似request.args.GET(“term”)
的内容在Flask中访问它
我建议不要使用flask表单作为搜索函数,而是使用一个简单的HTMLGET
表单,并在页面的每个请求上检查请求参数,如下所示:
@app.route(“/”,方法=[“GET”])
def search():
hanterm=request.args.get(“术语”)
如果是hanterm:
返回渲染模板(
“results.html”,
title=hanterm,
postdata=d[hanterm],
)
返回渲染模板(“index.html”,title=“Search”)