›_ebskola.lv
Prog I · 9. tēma · 6 stundas - Flask · Python · Web

Web integrācija //
un bibliotēkas

Pārveido Python programmu par web lietotni ar Flask. Apgūsti pip, venv, requests un Jinja2 templates.

6 stundas Flask · requests Krustiņi un nullītes
# 01 stundu plāns

6 stundas - pip, Flask un pārlūka spēle

noslēguma projekts
$ pip install flask requestsCollecting flask...Successfully installed flask$ python -m venv venv$ source venv/bin/activate(venv) $pip freeze > requirements.txt// pip + venv
pip · venvbibliotēkas

Ārējo bibliotēku instalēšana

pip install, virtuālā vide venv, requirements.txt - projekta atkarību pārvaldība.

9.1 stundaatvērt ↗
MITbrīva lietošanaGPLdalīties ar koduApache 2.0// licences
licencesatvērtais kods

Atvērtā koda licencēšana

MIT, GPL, Apache 2.0 atšķirības, kā lasīt bibliotēkas dokumentāciju.

9.2 stundaatvērt ↗
PārlūksFlask@app.routerender_templatePython// Flask
Flaskweb

Python pārvēršana web saskarnē

Flask @app.route(), HTTP GET/POST, render_template(), request/response cikls.

9.3 stundaatvērt ↗
index.html (Jinja2)<h1>{{ vārds }}</h1>{% for x in saraksts %} <li>{{ x }}</li>{% endfor %}app.pyrender_template( 'index.html', vārds="Anna")// Jinja2
Jinja2templates

HTML un Python sasaiste

Jinja2 {{ variable }}, {% for %}, {% if %} - Python mainīgie HTML šablonos.

9.4 stundaatvērt ↗
fetch('/api/gajiens', { method: 'POST', body: JSON.stringify(g)}).then(r => r.json()) .then(d => atjaunot(d))JavaScript fetch() → Flask → JSON// fetch() API
fetch · JSONinteraktivitāte

Interaktivitāte pārlūkprogrammā

JS fetch() → Flask POST → jsonify() atbilde → DOM atjaunošana bez lapas pārlādes.

9.5 stundaatvērt ↗
Krustiņi un Nullītes · FlaskXOXO$ flask run
Python · Flaskprojekts

Noslēguma projekts: Krustiņi un nullītes

Flask backend + HTML/JS frontend. Spēles stāvoklis Python serverī, gājieni caur REST API.

9.6 projektsatvērt ↗
# 02 špikeris

Flask un pip špikeris

Flask minimālā lietotne

from flask import Flask, render_template, request, jsonify

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/api/gājiens', methods=['POST'])
def gājiens():
    dati = request.get_json()
    rezultāts = apstrādāt(dati['gājiens'])
    return jsonify({'rezultāts': rezultāts})

if __name__ == '__main__':
    app.run(debug=True)  # localhost:5000

pip un venv komandas

# python -m venv venv            # izveido venv
# source venv/bin/activate       # aktivizē (Linux/Mac)
# venv\Scripts\activate          # aktivizē (Windows)
# pip install flask requests     # instalē
# pip freeze > requirements.txt  # saglabā atkarības
# pip install -r requirements.txt
$ flask run # Python kļūst par web serveri portā 5000