← zpět

Architektura stránky

Lekce 21

Vašim úkolem je vypracovat webovou stránku ala blog. Uživatelé budou moct na hlavní stránce vidět všechny dosud přidané články. Článek se bude dát rozkliknout a zobrazit jeho obsah na separátní stránce.

Pro administrátora (přihlašování zatím neřešíme) budou k dispozici základní CRUD (create, read, update, delete) operace. Stránky by mohly vypadařit nějak takto:

Přesměrování

Občas se bude hodit umět přesměrovat uživatele na jinou stránku po úspěšném provedeném požadavku. Například po úspěšném vytvoření článku (vyplnění formuláře + kliknutí na tlačítko "Uložit") se pošle požadavek POST /articles a po úspěšném provedení se přesměruje na stránku s detailem nově vytvořeného článku.

To se ve frameworku Flask provede pomocí funkce redirect.

from flask import redirect

@app.route('/articles', methods=['POST'])
def create_article():
    # tady se clanek ulozi do "databaze" (v nasem pripade jen slovnik)

    # po úspěšném vytvoření článku přesměrujeme na detail stránku
    return redirect(url_for('article_detail', id=article.id))

@app.route('/articles/<int:id>', methods=['GET'])
def article_detail(id):
    article = ...

    return render_template('article_detail.html', article=article)

Všimněte si na řádce 8, kde je použité redirect a url_for pro přesměrování na detail stránku. redirect provede samotné přesměrování, url_for generuje URL na základě názvu route (myšleno article_detail, všimněte si na řádku 11, že se tak funkce skutečně jmenuje) -- to se hodí, protože můžeme libovolně změnit název route (např. z /articles/<int:id> na /detail/<int:id>) a url_for se automaticky postará o to, aby byl uživatel přesměrovaný na správné místo.