it-swarm.com.de

Was ist in Flask? Was ist request.args und wie wird es verwendet?

Ich bin neu in Flask. Ich kann nicht verstehen, wie request.args verwendet wird. Ich habe irgendwo gelesen, dass es verwendet wird, um Werte der Abfragezeichenfolge zurückzugeben [korrigieren Sie mich, wenn ich falsch liege]. Und wie viele Parameter request.args.get() benötigt . Ich weiß, dass ich, wenn ich gesendete Formulardaten speichern muss, diese verwenden kann

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

Hier wird nur ein Parameter übergeben.

Betrachten Sie diesen Code. In diesem Code wurde auch die Paginierung vorgenommen.

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

Hier nimmt request.args.get() zwei Parameter an. Bitte erläutern Sie, warum es zwei Parameter erfordert und was davon verwendet wird.

38
martinho

Entsprechend der Flasche .Anfragen.args Dokumente.

flask.Request.args
Ein MultiDict mit dem geparsten Inhalt der Abfragezeichenfolge. (Der Teil in der URL hinter dem Fragezeichen).

Die args.get() ist die Methode get() für MultiDict , deren Prototyp wie folgt lautet:

get(key, default=None, type=None)
75
luoluo

@martinho als Neuling mit Flask und Python selbst, ich denke, dass die vorherigen Antworten hier als selbstverständlich vorausgesetzt haben, dass Sie ein gutes Verständnis der Grundlagen hatten. Falls Sie oder andere Zuschauer die Grundlagen nicht kennen, gebe ich mehr Kontext, um die Antwort zu verstehen ... 

... der request.args bringt Ihnen ein "Wörterbuch" -Objekt. Das "Dictionary" -Objekt ähnelt anderen Objekten vom Collection-Typ in Python, da es viele Elemente in einem einzigen Objekt speichern kann. Daher die Antwort auf Ihre Frage 

Und wie viele Parameter request.args.get() benötigt.

Es wird nur ein Objekt, ein Objekt vom Typ "Wörterbuch", benötigt (wie in den vorherigen Antworten angegeben). Dieses "Wörterbuch" -Objekt kann jedoch so viele Elemente enthalten, wie benötigt werden ... (Wörterbücher haben gepaarte Elemente, die als Key, Value bezeichnet werden).

Andere Objekttypen neben "Wörterbüchern" wären "Tuple" und "Liste" ... Sie können eine Google-Suche nach diesen und nach "Datenstrukturen" ausführen, um andere Python-Grundlagen zu lernen. Diese Antwort basiert auf Python. Ich habe keine Ahnung, ob dies auch für andere Programmiersprachen gilt.

9
alejandro gg

request.args ist ein MultiDict mit dem geparsten Inhalt der Abfragezeichenfolge. Aus der Dokumentation der get-Methode:

get (Schlüssel, Standard = Keiner, Typ = Keiner)

Geben Sie den Standardwert zurück, wenn angeforderte Daten existieren nicht. Wenn Typ angegeben ist und ein Aufruf ist, dann sollte den Wert konvertieren, ihn zurückgeben oder einen ValueError auslösen, wenn dies .__ ist. nicht möglich.

0
r-m-n

In einigen Fällen hat es einige interessante Verhaltensweisen, die man beachten sollte:

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'
0
Juha Untinen