Python Academy · leksjon

Skjemaer og forespørselsdata

Behandle brukerinndata

Leksjon 3 av 413 trinn

Skjemaer og forespørselsdata er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

request-objektet

Flask gir hver view tilgang til et globalt request-objekt som inneholder alle innkommende data: skjemafelt, spørringsstrenger, JSON, headere og mer.

from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')

Parametere i spørringsstrengen

Data etter ? i URL-en ligger i request.args. Bruk .get() for å lese en verdi på en trygg måte.

from flask import Flask, request
app = Flask(__name__)

@app.route('/search')
def search():
    term = request.args.get('q', '')
    return 'Searching for ' + term
print('/search?q=cats -> request.args')

Et HTML-skjema

Et skjema sender data når det sendes inn. Attributtene method og action bestemmer hvordan og hvor.

# <form method='POST' action='/login'>
#   <input name='username'>
#   <input name='password' type='password'>
#   <button>Submit</button>
# </form>
print('Form posts username and password')

Lese skjemadata

Innsendte skjemafelt kommer inn i request.form. Få tilgang til dem via inputfeltets name-attributt.

from flask import Flask, request
app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    user = request.form['username']
    return 'Welcome ' + user
print('request.form holds posted fields')

Trygg tilgang med get

Bruk av request.form['x'] utløser en feil hvis nøkkelen mangler. Foretrekk request.form.get('x'), som i stedet returnerer None.

from flask import Flask, request
app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    user = request.form.get('username')
    if not user:
        return 'Missing username', 400
    return 'Welcome ' + user
print('.get avoids KeyError')

GET og POST i én view

Et vanlig mønster er å vise skjemaet ved GET og behandle dataene ved POST, alt i én view.

from flask import Flask, request, render_template
app = Flask(__name__)

@app.route('/contact', methods=['GET', 'POST'])
def contact():
    if request.method == 'POST':
        return 'Thanks, ' + request.form.get('name', 'friend')
    return render_template('contact.html')
print('One view, two methods')

Validere inndata

Stol aldri på brukerdata. Kontroller at obligatoriske felt finnes og har fornuftige verdier før De bruker dem.

from flask import Flask, request
app = Flask(__name__)

@app.route('/age', methods=['POST'])
def age():
    raw = request.form.get('age', '')
    if not raw.isdigit():
        return 'Age must be a number', 400
    return 'Age is ' + raw
print('Validate before trusting input')

Lese JSON

API-klienter sender ofte JSON. request.get_json() tolker innholdet som en Python-dict.

from flask import Flask, request
app = Flask(__name__)

@app.route('/api', methods=['POST'])
def api():
    data = request.get_json()
    return 'Got name ' + data.get('name', '?')
print('get_json parses the JSON body')

Filopplastinger

Opplastede filer ligger i request.files. Lagre en fil med metoden .save() etter at De har validert den.

from flask import Flask, request
app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload():
    f = request.files.get('photo')
    if f:
        return 'Received ' + f.filename
    return 'No file', 400
print('request.files holds uploads')

Omdirigere etter POST

Etter at et skjema er behandlet, bør De omdirigere brukeren for å unngå duplikate innsendinger ved oppdatering. Bruk redirect(url_for(...)).

from flask import Flask, redirect, url_for
app = Flask(__name__)

@app.route('/done')
def done():
    return 'All done'

@app.route('/save', methods=['POST'])
def save():
    return redirect(url_for('done'))
print('Post/Redirect/Get pattern')

Flash-meldinger

flash() lagrer en engangsmelding som vises etter en omdirigering, noe som passer godt for bekreftelser som «Lagret».

from flask import Flask, flash, redirect, url_for
app = Flask(__name__)
app.secret_key = 'change-me'

@app.route('/save', methods=['POST'])
def save():
    flash('Saved successfully')
    return redirect(url_for('save'))
print('flash shows a one-time message')

Hurtigsjekk

Test kunnskapene Deres om skjemabehandling.

Oppsummering

De har behandlet brukerdata i Flask.

  • request.args brukes for spørringsstrenger, og request.form for skjemafelt
  • request.get_json() brukes for JSON-innhold, og request.files for opplastinger
  • Valider alltid inndata, og bruk .get() for trygg tilgang
  • Bruk Post/Redirect/Get og flash() for en ryddig brukeropplevelse
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Skjemaer og forespørselsdata» gratis?

Ja – hele teksten i «Skjemaer og forespørselsdata» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Skjemaer og forespørselsdata»?

Behandle brukerinndata Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Skjemaer og forespørselsdata»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Ruter og visninger
  2. Maler med Jinja2
  3. Skjemaer og forespørselsdata
  4. Bygge et REST-endepunkt
← Tilbake til Python Academy