2016-01-08 23 views
16

私はFlaskで新しいです。 request.argsの使い方を理解できません。私はどこかで、クエリー文字列の値を返すのに使われていると読んでいます。そして多くのパラメータrequest.args.get()がどれくらいかかります。 私が送信されたフォームデータを保存する必要があるとき、私はここでFlaskでは、request.argsとは何ですか?どのように使用されていますか?

fname = request.form.get("firstname") 

使用することができることを知っている、唯一の1つのパラメータが渡されます。

このコードを検討してください。このコードでもページネーションが行われています。

@app.route("/") 
def home(): 
    cnx = db_connect() 
    cur = cnx.cursor() 
    output = [] 

    page = request.args.get('page', 1) 

    try: 
     page = int(page) 
     skip = (page-1)*4 
    except: 
     abort(404) 

    stmt_select = "select * from posts limit %s, 4;" 
    values=[skip] 

    cur.execute(stmt_select,values) 
    x=cur.fetchall() 

    for row in reversed(x): 
     data = { 
      "uid":row[0], 
      "pid":row[1], 
      "subject":row[2], 
      "post_content":row[3], 
      "date":datetime.fromtimestamp(row[4]), 
     } 
     output.append(data) 

    next = page + 1 
    previous = page-1 
    if previous<1: 
    previous=1 
    return render_template("home.html", persons=output, next=next, previous=previous) 

ここで、request.args.get()は2つのパラメータをとる。 2つのパラメータが必要な理由とその使用方法を説明してください。

答えて

37

flask.Request.args文書によると、

flask.Request.args
MultiDictクエリ文字列の構文解析された内容に。 (疑問符の後のURLの部分)。

だからargs.get()は、そのプロトタイプは以下の通りであるMultiDict、方法get()ある:

+5

upvote '取得(キー、デフォルト=なし、タイプ=なし)のために' –

1
get(key, default=None, type=None) 

request.argsは、クエリ文字列の構文解析された内容にMultiDictあります。 documentationgetの方法から: 要求されたデータが存在しない場合

キー、デフォルト=なし、タイプ=なし

リターンをデフォルト値を取得します。 typeが指定され、呼び出し可能な場合は、 は値を変換する必要があります。返すか、 でない場合はValueErrorを送出します。

2

@ martinhoフラスケとPythonを自分で使っている初心者では、これまでの回答は基本的なことをよく理解していたと思います。あなたや他の視聴者がファンダメンタルスを知らない場合、私は答えを理解するためにもっと文脈を与えるでしょう...

... request.argsはあなたのために "辞書"オブジェクトを持っています。 "辞書"オブジェクトはPythonのオブジェクトの他のコレクション型に似ています。というのは、1つのオブジェクトに多くの要素を格納できるからです。したがって、あなたの質問への答え

そして、いくつのパラメータrequest.args.get()が必要ですか。

これは、オブジェクトの「辞書」タイプ(前の回答に記載されているもの)を1つだけ取ります。ただし、この「辞書」オブジェクトには、必要な数の要素を含めることができます(辞書には、Key、Valueというペア要素があります)。「辞書」、ほかのオブジェクトの

他のコレクション型を使用すると、他のPythonの基礎を学ぶためにそれらと「データ構造」でGoogle検索を実行することができます...「タプル」、および「リスト」になります。この答えはPythonに基づいています。他のプログラミング言語にも同じことが当てはまる場合、私は考えていません。

0

それが知っておくのは良いですいくつかのケースでは、いくつかの興味深い振る舞いを持っています

from werkzeug.datastructures import MultiDict 

d = MultiDict([("ex1", ""), ("ex2", None)]) 

d.get("ex1", "alternive") 
# returns: '' 

d.get("ex2", "alternative") 
# returns no visible output of any kind 
# It is returning literally None, so if you do: 
d.get("ex2", "alternative") is None 
# it returns: True 

d.get("ex3", "alternative") 
# returns: 'alternative'