【问题标题】:Flask and WTForms - how FlaskForm works?Flask 和 WTForms - FlaskForm 是如何工作的?
【发布时间】:2021-01-24 01:28:30
【问题描述】:

我正在学习 Flask,但我无法从 Flask-WTF 中理解 FlaskForm。 这个例子来自Flask Web Development: Developing Web Applications with Python, Miguel Grinberg一书。 代码如下。

你好.py

class NameForm(FlaskForm):
    name = StringField('What is your name?', validators=[DataRequired()])
    submit = SubmitField('Submit')
 
@app.route('/', methods=['GET', 'POST'])
def index():
    name = None
    form = NameForm()
    if form.validate_on_submit():
        name = form.name.data
    return render_template('index.html', form=form, name=name)

index.html

{% import "bootstrap/wtf.html" as wtf %}
{% block page_content %}
<div class="page-header">
    <h1>Hello, {% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1>
</div>
{{ wtf.quick_form(form) }}
{% endblock %}

这个简单的应用程序从用户那里获取名称并显示个性化消息。 假设我输入了我的姓名并单击提交按钮。如何从 form 对象(NameForm 的实例)中接收输入的名称并发送到渲染

name = form.name.data

在此之前,NameFormnew 实例何时被分配给 form 变量?

form = NameForm()

【问题讨论】:

标签: python flask flask-wtforms


【解决方案1】:

没有 FlaskForm。 您可以使用Flask.request 获取用户提交的name,如下所示:

@app.route('/', methods=['GET', 'POST'])
def index():
    name = None
    name = request.form.get('name', None)

(需要追加from Flask import request

这意味着当从处理程序调用时,任何库都可以通过Flask.request 对象获取请求值。这就是为什么 FlaskForm 不需要任何参数来获取请求的值(只要它是从请求处理程序中调用的)。

【讨论】:

    猜你喜欢
    • 2021-01-30
    • 2021-02-05
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多