検索

ホームページ  >  に質問  >  本文

python - Flask Web Development 第四章 Web表单 为什么要用form.name.data = ''

@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)
    

在if语句中,这个form.name.data被赋值给局部变量name且表单域的数据属性通过赋值为空字符串而被清除。

问题一:
在上述代码中,为什么需要清除form.name.data

问题二:

如下代码,为什么使用session的时候,就不需要清空form.name.data?

from flask import Flask, render_template, session, redirect, url_for

@app.route('/', methods=['GET', 'POST']) 
def index():
    form = NameForm()
    if form.validate_on_submit():
        session['name'] = form.name.data
        return redirect(url_for('index'))
    return render_template('index.html', form=form, name=session.get('name'))
    
伊谢尔伦伊谢尔伦2785日前686

全員に返信(1)返信します

  • ringa_lee

    ringa_lee2017-04-17 16:06:59

    フラスコにルートを追加するためにデコレーターを使用する場合は、http メソッドを決定する必要があります。
    最初のコードでは、get メソッドであるか post メソッドであるかが明示的に判断されていないため、デフォルトは get メソッドです。get メソッドが要求された場合、form.validate_on_submit() は検証されないため、返されます。ページ名の値が空 (なし) の場合、post メソッドを使用してフォームを送信すると、検証に合格した場合、その名前は送信された値と同じになります。データをクリアしないと、ページ上のフォームの名前の値が以前に入力したままになるためです。 2 番目の段落は検証され、リダイレクト ページが使用されているため、セッションとは関係がなく、明確でなくても問題ありません

    返事
    0
  • キャンセル返事