Radeći u Flask-u, ponekad nailazimo na situacije u kojima se lista pohranjena u sesiji treba vratiti. Ovo bi u početku moglo izgledati komplikovano, Flask omogućava da se ovo riješi relativno lako. Detaljno ćemo razgovarati o ovom rješenju, a ja ću vas voditi kroz svaki korak koda kako biste bili sigurni da ste ga temeljito razumjeli.
boca je mikro-web okvir koji, uprkos svojoj jednostavnosti, nudi bezbroj alata i biblioteka za izgradnju robusnih web servisa. Jedan od ovih alata su sesije, koje vam omogućavaju pohranjivanje informacija koje se mogu koristiti na više stranica ili korisničkih zahtjeva. Međutim, ove sesije ponekad uključuju liste koje zahtijevaju ponovno povezivanje, što je, srećom, problem koji se u Flasku može riješiti odgovarajućom implementacijom koda.
Rjesenje
Ponovno povezivanje liste u Flask sesiji je usredsređeno na koncept promenljivih objekata u piton – evo kako to možete učiniti.
from flask import Flask, session
app = Flask(__name__)
app.secret_key = 'your secret key'
@app.route('/add_to_list', methods=['POST'])
def add_to_list():
item = request.form['item']
if 'items' in session:
items = session['items']
items.append(item)
session['items'] = items # This is where you rebind the list
else:
session['items'] = [item]
return redirect(url_for('index'))
Objašnjenje Kodeksa
- Prvo, uvozimo Flask i sesiju iz flask modula. Secret_key je neophodan da bi sesija ispravno radila.
- Ruta '/add_to_list' je POST metoda koja prihvaća podatke obrasca koji sadrže stavku.
- U ovoj stavci prvo provjeravamo da li je ključ 'items' prisutan u sesiji. Ako jeste, preuzimamo listu i dodajemo našu novu stavku toj listi.
- Onda moramo ponovno dodeliti ovu izmijenjenu listu natrag na “session['items']”. Ovo je u suštini kako mi ponovo uvezati listu u sesiji.
- Ako ključ 'items' nije prisutan u sesiji, jednostavno mu dodjeljujemo novu listu koja sadrži našu stavku.
Flask sesije i Python liste
Flask-ove sesije i Python liste igraju značajnu ulogu u rješavanju ovog problema. Python liste su promjenjivi objekti koji se mogu mijenjati nakon kreiranja. Ovo svojstvo je bitno kada dodajemo nove stavke na listu pohranjenu u Flask sesiji.
Flask sesije pružaju elegantan način za spremanje podataka specifičnih za korisnika između zahtjeva. Ovo je posebno potrebno kada želimo pohraniti listu stavki kao što je prikazano u ovom primjeru.
Važnost odbacivanja liste
U Pythonu, kada manipuliramo promjenjivim objektom poput liste, promjene se odražavaju u svim referencama na taj objekt. Međutim, Flask-ove sesije ne otkrivaju ove izmjene automatski. Zato, kada izmijenimo listu pohranjenu u Flask sesiji, moramo je ponovo povezati sa sesijom da obavijestimo Flask o ovoj izmjeni.