In Flask, What is request.args and how is it used?

martinho picture martinho · Jan 8, 2016 · Viewed 170.9k times · Source

I'm new in Flask. I can't understand how request.args is used. I read somewhere that it is used to return values of query string[correct me if I'm wrong]. And how many parameters request.args.get() takes. I know that when I have to store submitted form data, I can use

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

Here, only one parameter is passed.

Consider this code. Pagination has also been done in this code.

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

Here, request.args.get() takes two parameters. Please explain why it takes two parameters and what is the use of it.

Answer

luoluo picture luoluo · Jan 8, 2016

According to the flask.Request.args documents.

flask.Request.args
A MultiDict with the parsed contents of the query string. (The part in the URL after the question mark).

So the args.get() is method get() for MultiDict, whose prototype is as follows:

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

Update:
In newer version of flask (v1.0.x and v1.1.x), flask.Request.args is an ImmutableMultiDict(an immutable MultiDict), so the prototype and specific method above is still valid.