如何在Flask中传递“WTF对象”

时间:2014-05-27 20:08:04

标签: python flask flask-wtforms

我正在使用flask来开发一个网站,现在我遇到了一个问题。 我在想是否可以在烧瓶中传递“WTF形式”对象。 像,

@app.route('/')
@app.route('/index')
@login_required
def index():
  user = flask.g.user
  form = PostForm()
  return flask.render_template("index.html",
        title="Home",
        user=user,
        form = form)

这个表格是PostForm的一个实例,实际上将由以下代码处理:

@app.route('/note/<int:id>', methods=['POST'])
def note(id):

form = ?(how to get this form?)?
if form.validate_on_submit():
   print id
   content = form.body.data
   currentTime = time.strftime('%Y-%m-%d', time.localtime(time.time()) )
   user_id = id
   return flask.redirect(flask.url_for('login'))

return flask.redirect( flask.request.args.get('next') or
        flask.url_for('index') )

在模板中,我将操作设置为“/ note / 1”,因此它将转发到此地址。但问题是,如何在函数 index 中创建表单?

我曾尝试使用 flask.g (显然,它不起作用,因为它是另一个请求)。我还尝试使用 global 变量。它也失败了。

有人能给我一个解决方案或任何建议吗?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您只需在PostForm路线中构建新版note并使用request.form中的发布数据:

from flask import request

@app.route('/note/<int:id>', methods=['POST'])
def note(id):
    form = PostForm(request.form)
    # or, if you are using Flask-WTF
    # you can do
    # form = PostForm()
    # and Flask-WTF will automatically pull from request.form