如何分析Flak代码中的常见模式?

时间:2019-08-15 16:00:54

标签: python-3.x flask flask-wtforms

我正在研究python Flask。 有一个用几个简单的代码编写的普通模板。 但我不知道。 我认为无论是POST还是GET请求,它都将定向到函数索引,并且它们都将通过相同的路径并获得相同的结果,即render_template(“ index.html”,form = form,name = name)和name = None,并且form是新创建的对象,其form.validate_on_submit()为false。 我不知道该怎么分析。请给我提示。

@app.route("/", methods=["GET", "POST"]) 
def index():
    name = None
    form = NameForm()
    if form.validate_on_submit():
        name = form.name.data
        form.name.data = ""
    return render_template("index.html", form=form, name=name)

1 个答案:

答案 0 :(得分:1)

您是对的-GETPOST/都将通过该路由处理-区别实际上是浏览器访问页面的方式。

form.validate_on_submit()的意思是“如果这是一个POST请求并且所有验证都正确,请执行此操作……”

因此,当您第一次通过在浏览器中输入/来加载http://localhost:5000/网页时,浏览器将GET页并进行加载。因此form.validate_on_submit()将返回False(因为它是一个GET请求),而name的值将是None

当您填写表单(假定为<form method="post">)并点击“提交”时,将会加载相同的路由,但是这次有一个POST请求-因此{{ 1}}现在将是form.validate_on_submit()(假设该表单有效),并且True的值现在将是name表单字段中提供的值。