Formularer og request-data
Behandl brugerinput
Formularer og request-data er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.
request-objektet
Flask giver hver visning adgang til et globalt request-objekt, der indeholder alle indgående data: formularfelter, forespørgselsstrenge, JSON, headere og meget mere.
from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')Parametre i forespørgselsstrenge
Data efter ? i URL'en findes i request.args. Brug .get() til at læse en værdi sikkert.
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')En HTML-formular
En formular sender data, når den indsendes. Attributterne 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')Læsning af formulardata
Indsendte formularfelter findes i request.form. Tilgå dem via inputfeltets name-attribut.
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')Sikker adgang med get
Brug af request.form['x'] udløser en fejl, hvis nøglen mangler. Foretræk 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 visning
Et almindeligt mønster er at vise formularen ved GET og behandle dataene ved POST, alt sammen i én visning.
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')Validering af input
Stol aldrig på brugerinput. Kontrollér, at obligatoriske felter findes og har fornuftige værdier, før du bruger 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æsning af JSON
API-klienter sender ofte JSON. request.get_json() fortolker brødteksten 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')Upload af filer
Uploadede filer findes i request.files. Gem en fil med dens .save()-metode efter at have valideret 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')Omdirigering efter POST
Efter behandling af en formular skal du omdirigere brugeren for at undgå dobbelte indsendelser ved opdatering. Brug 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-beskeder
flash() gemmer en engangsbesked, som vises efter en omdirigering. Det er nyttigt til bekræftelser som 'Gemt korrekt'.
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')Hurtig kontrol
Test din viden om formularhåndtering.
Opsummering
Du har behandlet brugerinput i Flask.
request.argstil forespørgselsstrenge,request.formtil formularfelterrequest.get_json()til JSON-brødtekster,request.filestil uploads- Valider altid input, og brug
.get()for sikker adgang - Brug Post/Redirect/Get og
flash()for en enkel brugeroplevelse
Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 76
- Lektioner
- 320
Ofte stillede spørgsmål
Er lektionen “Formularer og request-data” gratis?
Ja — hele teksten til “Formularer og request-data” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Formularer og request-data”?
Behandl brugerinput Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Python Academy?
Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Formularer og request-data”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Python Academy-lektion?
Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Routes og views
- Skabeloner med Jinja2
- Formularer og request-data
- Opbygning af et REST-endpoint