# 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.

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.
```