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

How to analyze a common pattern in Flak code?

我正在研究python Flask。 有一个用几个示例代码编写的通用模式。 但我想不通。 我认为无论是 POST 还是 GET 请求,它都会被定向到函数索引,并且它们都将通过相同的路由并得到相同的结果,即 render_template("index.html", form=form, name=name) and 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)

你是对的——GETPOST/ 都将由该路由处理——不同之处在于浏览器访问页面的方式。

form.validate_on_submit()的意思是"If this is a POST request and all the validation is good, do this..."

因此,当您通过在浏览器中键入 http://localhost:5000/ 首次加载 / 网页时,您的浏览器将 GET 页面并加载它。所以 form.validate_on_submit() 将 return False (因为它是一个 GET 请求)并且 name 值将是 None.

然后当您填写表格(假定为 <form method="post">)并点击提交时,将加载相同的路由,但这次是 POST 请求——所以form.validate_on_submit() 现在将是 True(假设表单有效)并且 name 的值现在将是 name 表单字段中提供的值。