python - Flask Web Development 第四章 Web表单 为什么要用form.name.data = ''
伊谢尔伦
伊谢尔伦 2017-04-17 16:04:59
0
1
683
@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'))
    
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(1)
左手右手慢动作

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート