Python Academy · Lektion

Formulär och förfrågningsdata

Bearbeta användarinmatning

Lektion 3 av 413 steg

Formulär och förfrågningsdata är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

request-objektet

Flask ger varje vy åtkomst till ett globalt request-objekt som innehåller alla inkommande data: formulärfält, frågesträngar, JSON, headers och mycket mer.

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

Parametrar i frågesträngen

Data efter ? i URL:en finns i request.args. Använd .get() för att läsa ett värde på ett säkert sätt.

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

Ett HTML-formulär

Ett formulär skickar data när det skickas in. Attributen method och action avgör hur och vart data skickas.

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

Läsa formulärdata

Insända formulärfält finns i request.form. Åtkomst till dem får du via inmatningsfältets attribut name.

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

Säker åtkomst med get

Om du använder request.form['x'] genereras ett undantag om nyckeln saknas. Föredra request.form.get('x'), som i stället returnerar 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 och POST i samma vy

Ett vanligt mönster är att visa formuläret vid GET och behandla data vid POST, allt i samma vy.

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

Validera indata

Lita aldrig på användarindata. Kontrollera att obligatoriska fält finns och har rimliga värden innan du använder 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')

Läsa JSON

API-klienter skickar ofta JSON. request.get_json() tolkar innehållet 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')

Filuppladdningar

Uppladdade filer finns i request.files. Spara en fil med dess metod .save() efter att du har validerat 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')

Omdirigera efter POST

Efter att ett formulär har behandlats omdirigerar du användaren för att undvika dubbla inskickningar vid omladdning. Använd 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-meddelanden

flash() lagrar ett engångsmeddelande som visas efter en omdirigering, vilket passar bra för bekräftelser som 'Sparades utan problem'.

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

Snabbtest

Testa dina kunskaper om formulärhantering.

Sammanfattning

Du har behandlat användarindata i Flask.

  • request.args för frågesträngar, request.form för formulärfält
  • request.get_json() för JSON-innehåll, request.files för uppladdningar
  • Validera alltid indata och använd .get() för säker åtkomst
  • Använd Post/Redirect/Get och flash() för en tydlig användarupplevelse
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Formulär och förfrågningsdata” gratis?

Ja – hela texten till ”Formulär och förfrågningsdata” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Formulär och förfrågningsdata”?

Bearbeta användarinmatning Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Formulär och förfrågningsdata”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Rutter och vyer
  2. Mallar med Jinja2
  3. Formulär och förfrågningsdata
  4. Bygga en REST-endpoint
← Tillbaka till Python Academy