将参数传递给表单构造函数WTForms

时间:2016-03-12 01:12:07

标签: python flask wtforms

可能重复:WTForms - dynamic labels by passing argument to constructor?

我正在使用WTForms和Flask创建一个表单,允许用户输入新的联系人:

class ContactForm(Form):
    firstName = StringField("First Name", [validators.Required("Please enter your first name.")])
    lastName = StringField("Last Name", [validators.Required("Please enter your last name.")])
    email = StringField('Email')
    phoneNo = StringField('Phone #')
    notes = StringField('Notes', widget=TextArea())
    submit = SubmitField("Create Contact")

    def __init__(self, *args, **kwargs):
        Form.__init__(self, *args, **kwargs)

我想在用户创建新联系人时以及当用户想要编辑现有联系人时使用此表单,因此我需要能够动态更改显示给用户的一些标签(在特别是我需要更改提交按钮上的文字)。我想为此目的将字符串传递给构造函数,但我对Python或WTForms并不熟悉。有人可以帮我弄清楚怎么做吗?

1 个答案:

答案 0 :(得分:0)

我现在正在做类似的事情。我想知道你的HTML模板是什么样的。我使用我的模板来担心提交按钮文本。以下是 init .py>>>

中的类
from flask import Flask, render_template
from wtforms import Form, StringField, validators
class InputForm(Form):
    something = StringField(u'Enter a website', [validators.required(), validators.url()])
@app.route('/somewhere/', methods=['GET', 'POST'])
def index():
  form = InputForm(request.form)
  if request.method == 'POST' and form.validate():
    url = form.something.data
    someAction = compute(url)
    return render_template("view_output.html", form=form, someAction = someAction)
  else:
    return render_template("view_input.html", form=form)

以下是我在模板>>>

中使用它的方法
<form method=post action="">
    <div class="form-group">
        <label for="thaturl">Website Adress</label>
        {{ form.something(style="margin-top: 5px; margin-bottom: 5px; height: 26px; width: 292px; margin-right: 15px;") }}
    </div>
    <button type="submit" class="btn btn-primary" aria-label="Left Align" style="margin-top: 5px; margin-bottom: 5px; height: 44px; margin-right: 15px">
        <span class="glyphicon glyphicon-signal" aria-hidden="true"></span>
        Check My Site
    </button>
    </form>