Zložitejšie cesty
Nebolo by pekné, aby sme mohli pesničky zoradzovať podľa rôznych kritérií?
Poďme zoradiť pesničky abecedne podľa umelca. Na uživateľský vstup použijeme URL. Ak zadáme adresu /artist
, pesničky budú zoradené abecende podľa umelca.
Najprv zmeňme cestu.
@app.route('/playlist')
@app.route('/playlist/<sorting>')
def playlist(sorting=None):
playlist
sa teraz zavolá, aj keď načítame /playlist
aj keď načítame /playlist/artist
, pričom v druhom prípade bude hodnota premennej sorting
"artist"
.
Ešte potrebujeme ošetriť prípady, keď sorting
bude napr. psicek
. My nemáme pole psicek
, takže potrebujeme to nejak ošetriť. Do index.html
pošleme už zoradené pesničky.
if sorting in ['artist']:
render_songs = sorted(songs, key=itemgetter(sorting))
else:
render_songs = songs
return render_template('index.html', name="Dobré texty", songs=render_songs)
http://127.0.0.1:5000/playlist/artist
nám už vráti abecedne zoradený zoznam pesničiek podľa mena umelca. Ak chceme zoradiť pesničky podľa ich názvu na adrese http://127.0.0.1:5000/playlist/title
, stačí pridať 'title'
do zoznamu povolených metód zoradzovania.
if sorting in ['artist', 'title']:
Nie je to milé, ako rýchlo sa veci vo Flasku implementujú? :)
Pridajme ešte, pre pohodlnosť, linky na rôzne druhy zoradzovania.
<a href="{{ url_for('playlist') }}">Základné zoradenie</a><br/>
<a href="{{ url_for('playlist', sorting='artist') }}">Zoraď abecedne podľa umelca</a><br/>
<a href="{{ url_for('playlist', sorting='title') }}">Zoraď abecedne podľa názvu pesničky</a><br/>
Celý kód HTML súboru sa nachádza tu a Python súboru tu.
Úloha:
Tabuľke, ktorú si vytvoril/(a) v úlohách z minulej kapitoly implementuj triedenie podľa aspoň 3 rôznych kritérií.
Ukážkový program opäť nájdeš na Githube [table].