【问题标题】:Update text of submit button in wtforms在 wtforms 中更新提交按钮的文本
【发布时间】:2015-11-13 11:08:07
【问题描述】:

我有一个表单,将用于新的提交和更新。我的问题是关于提交按钮的文本。我想根据情况将文本更改为 New submitNew update。这纯粹是提供信息。

class Interview(Form):
    ...
    submit = SubmitField('New submit')  

如果可能的话,我想避免仅仅因为提交的文本而创建一个具有完全相同字段的新类。

【问题讨论】:

    标签: python flask wtforms flask-wtforms


    【解决方案1】:

    老问题,但对于遇到此问题的其他人,另一种方法是在渲染模板之前从代码中设置它:

    if is_submit:
        form.submit.label.text = 'New submit'
    else:
        form.submit.label.text = 'New update'
    
    return render_template(...)
    

    【讨论】:

    • 这似乎更干净,只是更改标签而不是必须添加一个新的表单类作为批准的答案建议(尽管两者都有效)。谢谢。
    【解决方案2】:

    使用 mixins 的正确方法:

    class InterviewMixin():
        ...
    
    class InterviewSubmit(Form, InterviewMixin):
        submit = SubmitField('New submit')
    
    class InterviewUpdate(Form, InterviewMixin):
        submit = SubmitField('New update')
    

    【讨论】:

      【解决方案3】:

      我通过不在表单定义中合并提交按钮解决了这个问题,而是根据我想要的标签在 HTML 中添加一个提交按钮。

      {% if pagetitle == 'Update' %}
         <p><input type="submit" name="btn" value="New Update"></p>
      {% endif %}
      {% if pagetitle == 'Submit' %}
         <p><input type="submit" name="btn" value="New Submit"></p>
      {% endif %}
      

      使用这种方式,您可以使用相同的表单,并在按钮上使用不同的标签,具体取决于应该使用哪一个。

      如果你需要你可以使用相同的变量来设置表单的动作,如果你需要指向不同的视图。

      或者你可以使用视图中按钮的值。

      if flask.request.form['btn'] == 'New Update':
         ...
      elif flask.request.form['btn'] == 'New Submit':
         ...
      

      【讨论】:

        【解决方案4】:

        正确的方法是制作两个表单并检查在服务器端按下了哪个提交按钮。

        if submit_form.validate_on_submit() and submit_form.any_field.data:
                print "submit_form submit button is Pressed"
        elif update_form.validate_on_submit() and update_form.any_field.data:
                print "update_form submit button is submitted"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-05-03
          • 2015-10-25
          • 1970-01-01
          • 2017-01-02
          • 1970-01-01
          • 2014-03-20
          • 1970-01-01
          相关资源
          最近更新 更多