2016-01-08 6 views
16

Sono nuovo in Boccetta. Non riesco a capire come viene utilizzato request.args. Ho letto da qualche parte che è usato per restituire i valori della stringa di query [correggimi se ho torto]. E quanti parametri ha lo request.args.get(). So che quando ho per memorizzare i dati dei moduli presentati, posso usareIn Flask, che cosa è request.args e come viene utilizzato?

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

Qui, viene passato un solo parametro.

Considerare questo codice. Anche l'impaginazione è stata eseguita in questo codice.

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

Qui, request.args.get() accetta due parametri. Si prega di spiegare perché ci vogliono due parametri e qual è l'uso di esso.

risposta

37

Secondo i documenti flask.Request.args.

flask.Request.args
Un MultiDict con il contenuto analizzati della stringa di query. (La parte nell'URL dopo il punto interrogativo).

Così il args.get() è il metodo get() per MultiDict, il cui prototipo è il seguente:

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

upvote per 'get (chiave, impostazione predefinita = Nessuno, type = None)' –

1

request.args è un MultiDict con i contenuti analizzati della stringa di query. Dal documentation di get metodo:

get (chiave, impostazione predefinita = Nessuno, type = Nessuno)

Ritorna il valore di default se il dati richiesti non esiste. Se il tipo è fornito ed è un chiamabile, lo dovrebbe convertire il valore, restituirlo o generare un errore ValueError se questo è non possibile.

2

@martinho come newbie con Flask e Python, penso che le risposte precedenti qui davano per scontato che si conoscesse bene i fondamenti. Nel caso in cui tu o altri spettatori non conosceste i fondamenti, darò più contesto per capire la risposta ...

... il request.args sta portando un oggetto "dizionario" per voi. L'oggetto "dizionario" è simile ad altri tipi di raccolta di oggetti in Python, in quanto può memorizzare molti elementi in un singolo oggetto. Quindi la risposta alla tua domanda

E quanti parametri request.args.get() accetta.

Sarà necessario un solo oggetto, un tipo di oggetto "dizionario" (come indicato nelle risposte precedenti). Questo oggetto "dizionario", tuttavia, può avere tutti gli elementi necessari ... (i dizionari hanno elementi associati chiamati Chiave, Valore).

Altro tipo di raccolta di oggetti oltre a "dizionari", sarebbe "tupla" e "elenco" ... è possibile eseguire una ricerca su google su quelle e "strutture dati" per apprendere altre basi di Python. Questa risposta è basata su Python; Non ho idea se lo stesso vale per altri linguaggi di programmazione.

0

Ha un comportamento interessante in alcuni casi è bene essere a conoscenza di:

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'