Formulär och förfrågningsdata
Bearbeta användarinmatning
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.argsför frågesträngar,request.formför formulärfältrequest.get_json()för JSON-innehåll,request.filesfö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
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
- Rutter och vyer
- Mallar med Jinja2
- Formulär och förfrågningsdata
- Bygga en REST-endpoint