Vaje: Spletna storitev
Piškotki
Uporabnikom nočemo dati možnosti, da dostopajo do neke igre tako, da spremenijo številko v URL naslovu. Zato bomo id_igre posredovali preko piškotkov.
Dodajte naslov
'/nova_igra/'z metodo POST, ki ustvari novo igro in z metodobottle.response.set_cookieshraniid_igrev piškotek in preusmeri na naslov'/igra/'.
Opomba: V piškotku podajte spremenljivkopath='/', saj s tem poskrbite, da bo vaš piškotek ostal tudi po preusmeritvi.Na naslovu
'/igra/'sedaj preberiteid_igreiz piškotka zbottle.request.get_cookiein prikažite primerno igro.Počistite spletne naslove, ki jih ne uporabljate več, npr.
'/igra/<id_igre:int>/'. Ne pozabite spremeniti predlog, da bodo gumbi uporabljali pravilne naslove.Ker želimo pred uporabnikom skriti
id_igre, v piškotku dodatno uporabimo spremenljivkosecret, ki jo nastavimo na nek ključ. Ključ je lahko kar konstanta vašega programa.
Uporaba datotek
Vsakič, ko na novo poženemo strežnik, izgubimo vse podatke o igrah. Da bi to preprečili lahko uporabimo datoteke, v katere shranjujemo stanje.
Razredu
Vislicedodajte atributdatoteka_s_stanjemin metodinalozi_igre_iz_datotekeinzapisi_igre_v_datoteko. Pri tem uporabljajte knjižnicojsonin funkcijijson.dumpinjson.load. Ker knjižnicajsonne zna delati z objekti razredaIgra, v datoteke shranite podatke, s katerimi lahko stanje rekonstruirate.
Opomba: Funkciji za shranjevanje in nalaganje vam bosta ključe vedno prevedli v nize, tako da jih ne pozabite pretvoriti nazaj, če je to potrebno.Ustvarite datoteko
stanje.jsonv katero shranite besedilo'{}'(torej prazno stanje). Ime datoteke dodajte v aplikacijo kot konstanto, in posodobite klic za izgradnjo objektaVislice.Posodobite vse funkcije, ki spreminjajo stanje iger (npr.
nova_igrainugibaj) tako, da bodo na začetku prebrale stanje iz datoteke in na koncu shranile posodobljeno stanje v datoteko.Razredu
Vislicelahko kot atribut dodamo tudi datoteko z besedami in v metodinova_igraustvarimo bazen možnosti iz besed v datoteki.
Dodatni izzivi
Dodajte 'tipkovnico', tako da bo lahko igralec kliknil na želeno črko, namesto da jo mora vnesti in potrditi.
Dodajte možnost ogleda statistik preteklih iger.