Nauč se Python > Kurzy > Začátečnický kurz PyLadies > Opakování / Téma na přání / Webový server > Webový server - rozhraní k piškvorkám

Webový server - rozhraní k piškvorkám

Tato lekce navazuje na dřívější úkoly - 1D piškvorky. Pokud je nemáš udělané, můžeš použít ukázkové následující soubory.

Soubor util.py musí obsahovat funkci tah(pole, index, symbol), která se pokusí umístit hráčův symbol do zadaného hracího pole a vrací nový stav hracího pole (neúspěch je indikován vyvoláním výjimky ValueError). Může vypadat například takto:

Řešení

Podobně s ai.py. Ten musí obsahovat funkci tah_pocitace(pole, symbol), který se pokusí umístit zadaný symbol do hracího pole, vrací nový stav hracího pole. použít velmi naivní strategii:

Řešení

První seznámení se serverem

Pro webový server dneska použijeme knihovnu flask. Již tradičně, nejprve si ji nainstalujeme:

(venv) $ python -m pip install flask

Začneme s jednoduchou kostrou:

# webpiskvorky.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hra():
    jmeno_zvirete = 'Andulka na bidýlku'

    return f'Ahoj, jmenuju se {jmeno_zvirete}.'

Spuštění serveru

Aplikace ve Flasku se spouští trochu jinak, než programy, které jsme si doposud napsali. Nejprve je nutné nastavit několik proměnných prostředí a to se dělá na různých počítačích jiným způsobem.

V linuxu/Mac:

$ export FLASK_APP=webpiskvorky.py
$ export FLASK_DEBUG=1

Pokud pracuješ na Windows:

> set FLASK_APP=webpiskvorky.py
> set FLASK_DEBUG=1

Tak, tím máme nachystané prostředí a konečně můžeme server spustit:

(venv) $ flask run
 * Serving Flask app "webpiskvorky.py" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 279-218-554

Otevři si v prohlížeči stránku http://127.0.0.1:5000 a mělo by se ti zobrazi prázdná stránka pouze s textem

Ahoj, jmenuju se Andulka na bidýlku.

Šablona

Psaní obsahu stránky přímo v pythonu je docela nepohodlné. Proto využijeme tzv. šablon. To je soubor, do kterého ve kterém se dají nahradit proměnné za jejich hodnoty.

Ve stejné složce, jako se nachází soubor webpiskvorky.py vytvoříme novou složku templates a v ní následující piskvorky.html:

Soubor templates/piskvorky.html:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta charset="utf-8">
    </head>
    <body>
        Ahoj, jmenuju se {{ jmeno }}
    </body>
</html>

Nyní upravíme naši funkci tak, abychom šabloně předali proměnné a výsledný obsah vrátili jako odpověd serveru.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hra():
    jmeno_zvirete = 'Andulka na bidýlku'

    return render_template('piskvorky.html', jmeno=jmeno_zvirete)

Pojmenovaný argument funkce render_template uvnitř šablony vezme jako název proměnné uvnitř šablony. Hodnotu proměnné v šabloně vypíšeme pomocí dvojitých složených závorek.

Výsledná aplikace

Řešení


Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.