# Beležka 1. **Registracija/Prijava:** Uporabnik se lahko registrira ali prijavi v aplikacijo. Pri registraciji zahtevaj uporabniško ime in geslo. Registracijo/prijavo lahko združiš (kot v chatu). 2. **Urejanje besedila:** Po prijavi omogoči uporabniku urejanje besedila v textarea polju. Omogoči shranjevanje urejenega besedila. Shranjuješ lahko, ko uporabnik klikne na določen gumb. Ali pa kar na onchange() trigger textarea. 3. **Prikaz urejenega besedila:** Ob naslednji prijavi uporabnika prikaži prejšnje urejeno besedilo v textarea polju. ## Pomoč - Potreboval boš route za prijavo/registracijo. Tu uporabimo kar HTML formo, ki pošilja preko POST-a. ```html <form action="/login" method="post"> <label for="username">Uporabniško ime:</label><br> <input type="text" id="username" name="username"><br> <label for="password">Geslo:</label><br> <input type="password" id="password" name="password"><br><br> <input type="submit" value="Prijava"> </form> ``` V resnici, to da uporabimo metodo POST spremeni samo sledeče. ![image](https://hackmd.io/_uploads/SyRlVdfg0.png) Za razliko od **GET**-a, pri katerem vidimo parametre kar v URL-ju. Pri **POST**-u, skrijemo parametre kar v "body" klica, ki ni javno vidno. Body, se kasneje enkriptira s pomočjo HTTPS protokola in je varen na poti (ne pa na začetku in cilju). V Flask delu se spremeni, da namesto request.args, kličemo request.form ```python= @app.route('/login', methods=['POST']) def submit(): # Obdelava podatkov iz forme if request.method == 'POST': # na istem routu, lahko celo filtriramo po metodi in spreminjamo return funkcije na njeni podlagi. username = request.form['username'] password = request.form['password'] # Tukaj bi šli podatki v preverjanje gesla return f'Prejeto: {username}, {password}' ``` V Ajax metodo nastavimo preko "type" ključa. ```javascript= $.ajax({ type: "POST", url: "/login", data: {}, // success: function(response) { alert("Strežnik reče: " + response); } }); ``` TinyDB pomoč ```python= from tinydb import TinyDB, Query db = TinyDB('db.json') # To ustvari (ali odpre, če že obstaja) datoteko db.json, ki služi kot naša baza podatkov. db.insert({'username': 'uporabnik', 'password': 'geslo123', 'note': 'Začetna vrednost beležke? Mogoče pozdravimo uporabnika.. Hey uporabnik!'}) # To doda nov zapis v našo bazo. Vsak zapis ima ključe 'username', 'password' in 'note' - v note si shranimo vsebino beležke. User = Query() search_result = db.search(User.username == 'uporabnik') # To poišče vse zapise, kjer je vrednost ključa 'username' enaka 'uporabnik'. # Lahko bi rekli tudi Query().username == 'uporabnik'. # Ponavadi si jo poimenujemo zaradi preglednosti, lahko pa jo tudi v napreprej filtriramo db.update({'note': 'Posodobljena vsebina'}, User.username == 'uporabnik') # To posodobi zapis, ki ustreza pogoju (kjer je 'username' enak 'uporabnik'), in nastavi vrednost 'note' na novo vsebino. user_note = db.search(User.username == 'uporabnik')[0]['note'] # To najde prvi zapis, ki ustreza pogoju, in izpiše vrednost njegove beležke. ```