【问题标题】:use post html after rending html渲染 html 后使用 post html
【发布时间】:2017-12-03 05:44:05
【问题描述】:

使用烧瓶和 WT 表单我试图在表单中获取用户输入并将用户输入重定向到另一个路由,在那里使用函数中的输入将获得一些数据。

我希望这些数据以 WT 形式使用。一旦我看到数据并检查一切都很好。我想将其保存为数据库的新条目。

问题:提交表单后,我无法将其处理为发布请求。

@app.route('/', method =[POST,GET])
def home():
    forms = inputForms(request.form)
    if form_validate() and request.POST:
         value=forms.input.data
         redirect(url_for(/edit, value=value) 
    return render_template('input.html')  -- Initial page where getting user input 
  @app.route('/edit', method =[POST,GET])
   def edit(value):
       data= getdata(value)
       if data == 'error':
            return render_template('error.html')
       else:
          form=request.form(data=data)
          return render_template('data.html', form=form
          if form_validate() and request.POST:
               save ()

我想看看一旦呈现表单我如何使用它提交。

我可以获得表格,但一旦返回,我就无法继续保存选项

【问题讨论】:

  • 如果你通过redirect 到达你的edit 函数,我认为它仍然不是POST,所以if request.POST 失败了。
  • 感谢您的回复,您能否提出其他方法,我对 python 也很陌生,也可以编码

标签: javascript forms post flask flask-wtforms


【解决方案1】:

根据您的评论,您可以更改发布操作。所以你的表单是POSTed 到另一条路线。

<form method="POST" action="{{url_for('edit')}}">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name(size=20) }}
<input type="submit" value="Go">

在您的模板中使用上述内容,然后您可以将验证功能移至route

@app.route('/edit', method =[POST,GET])
def edit():
   if request.method == 'POST' and form.validate():
      pass

这样,您可以处理edit 路由中的所有内容。 那么您的 home 路由可以更改为仅呈现表单。

@app.route('/', method =[POST,GET])
def home():
    forms = inputForms(request.form)
    return render_template('input.html')

您的routes 应该有一个trailing slash。所以最好将您的路线设置为:

@app.route('/edit/', method =[POST,GET])
def edit():
    pass

【讨论】:

    猜你喜欢
    • 2021-09-27
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    相关资源
    最近更新 更多