Je suis nouveau dans la fiole. Je ne comprends pas comment request.args
est utilisé. J'ai lu quelque part qu'il est utilisé pour retourner les valeurs de la chaîne de requête [corrigez-moi si je me trompe]. Et combien de paramètres request.args.get()
prend . Je sais que lorsque je dois stocker des données de formulaire soumises, je peux utiliser
fname = request.form.get("firstname")
Ici, un seul paramètre est passé.
Considérons ce code. La pagination a également été faite dans ce 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)
Ici, request.args.get()
prend deux paramètres. S'il vous plaît expliquer pourquoi il prend deux paramètres et quelle est l'utilisation de celui-ci.
Selon le flask.Request.args documents.
flask.Request.args
Un MultiDict avec le contenu analysé de la chaîne de requête. (La partie dans l'URL après le point d'interrogation).
Donc, args.get()
est la méthode get()
pour MultiDict , dont le prototype est le suivant:
get(key, default=None, type=None)
@martinho en tant que débutant utilisant Flask et Python moi-même, je pense que les réponses précédentes ici prenaient pour acquis que vous compreniez bien les principes fondamentaux. Au cas où vous ou d'autres téléspectateurs ne connaissent pas les fondamentaux, je vais vous donner plus de contexte pour comprendre la réponse ...
... le request.args
apporte un objet "dictionnaire" pour vous. L'objet "dictionnaire" est similaire aux autres objets de type collection de Python, en ce sens qu'il peut stocker de nombreux éléments dans un seul objet. Donc la réponse à votre question
Et combien de paramètres
request.args.get()
prend.
Cela ne prendra qu'un seul objet, un objet de type "dictionnaire" (comme indiqué dans les réponses précédentes). Cependant, cet objet "dictionnaire" peut avoir autant d'éléments que nécessaire ... (les dictionnaires ont des éléments appariés appelés clé, valeur).
En plus des "dictionnaires", d'autres types d'objets de collection seraient "Tuple" et "liste" ... vous pouvez lancer une recherche google sur ceux-ci et sur les "structures de données" afin d'apprendre d'autres bases de Python. Cette réponse est basée sur Python; Je ne sais pas si la même chose s'applique aux autres langages de programmation.
request.args
est un MultiDict avec le contenu analysé de la chaîne de requête. À partir de la méthode documentation of get
:
get (clé, valeur par défaut = Aucune, type = Aucune)
Renvoie la valeur par défaut si les données demandées n’existent pas. Si type est fourni et est appelable, il devrait convertir la valeur, la renvoyer ou générer une valeur ValueError s'il s'agit de pas possible.
Il est intéressant, dans certains cas, d’avoir un comportement intéressant:
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'