Wat is “aanvraag.args” en hoe wordt het gebruikt?

Als een kolf beginner, kan ik niet begrijpen hoe request.argswordt gebruikt. Ik heb ergens gelezen dat het wordt gebruikt om waarden van query-reeks te retourneren (corrigeer me als ik het mis heb) en hoeveel parameters request.args.get()neemt.

Ik weet dat wanneer ik ingediende formuliergegevens moet opslaan, ik kan gebruiken fname = request.form.get("firstname"). Hier wordt slechts één parameter doorgegeven, terwijl de onderstaande code twee parameters kost.

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

Leg uit waarom het twee parameters kost en dan wat het gebruik ervan is.


Antwoord 1, Autoriteit 100%

Volgens de flask.request.args documenten .

fles.Request.args
Een multidict met de geparseerde inhoud van de query-reeks. (Het deel in de URL na het vraagteken).

Dus de args.get()is methode get()voor MultiDict, waarvan het prototype als volgt is:

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

Bijwerken:
In nieuwere versie van flask (v1.0.xen v1.1.x), flask.Request.argsis een ImmutableMultiDict(een onveranderlijke MultiDict), dus het prototype en de specifieke methode hierboven is nog steeds geldig.


Antwoord 2, autoriteit 22%

@martinho als een nieuweling die Flask en Python zelf gebruikt, denk ik dat de vorige antwoorden hier vanzelfsprekend waren dat je een goed begrip van de grondbeginselen had. Als jij of andere kijkers de basis niet kennen, zal ik meer context geven om het antwoord te begrijpen…

… de request.argsbrengt een “woordenboek”-object voor je. Het “woordenboek” -object is vergelijkbaar met andere objecten van het verzamelingstype in Python, in die zin dat het veel elementen in één enkel object kan opslaan. Daarom het antwoord op uw vraag

En hoeveel parameters request.args.get()nodig heeft.

Het duurt slechts één object, een “woordenboek” -type (zoals vermeld in de vorige antwoorden). Dit “Woordenboek” -object kan echter zoveel elementen hebben als nodig … (Woordenboeken hebben gekoppelde elementen genaamd toets, waarde).

Andere verzameling-type objecten naast “Woordenboeken”, zou “tuple” en “lijst” zijn … U kunt een Google-zoekopdracht uitvoeren op die en “Data Structures” om andere Python-fundamentals te leren. Dit antwoord is gebaseerd op Python; Ik heb geen idee of hetzelfde geldt voor andere programmeertalen.


Antwoord 3

Het heeft een aantal interessant gedrag in sommige gevallen die goed zijn om op de hoogte te zijn van:

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'

Antwoord 4

request.argsis een Multidict met de geparseerde inhoud van de query-reeks.
Van de Documentatie van getMethode:

krijgen (sleutel, standaard = geen, types = geen )

Retourneer de standaardwaarde als de
gevraagde gegevens bestaan ​​niet. Als het type wordt verstrekt en een vulbaar is
zou de waarde moeten converteren, het retourneren of een waardeerror verhogen als dat is
niet mogelijk.

Other episodes