Stundas uzdevums: Saprast, kā mūsdienu lietotnes ir sadalītas priekšgalā un aizmugurē, un ka starp tām notiek HTTP komunikācija.
70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un tikai beigās pieraksti vienu secinājumu. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.
Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.
Mūsdienu web lietotnes sastāv no divām atšķirīgām daļām:
# Komunikācija notiek caur HTTP pieprasījumiem
[Pārlūks] ── GET /api/speletaji ──> [Serveris]
[Pārlūks] <── 200 OK + JSON ──────── [Serveris]
│
▼
[Datubāze]
Galvenās priekšrocības atdalītā arhitektūrai:
Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 12.1 Front-end un back-end arhitektūra; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html", temats="12.1 Front-end un back-end arhitektūra")
if __name__ == "__main__":
app.run(debug=True)
<h1>{{ temats }}</h1>
<p>Ja redzi šo tekstu pārlūkā, iesildīšanās piemērs darbojas.</p>
app.py, bet HTML daļu ievieto templates/index.html.Pievieno šīs stundas paņēmienu kā nelielu, strādājošu projekta daļu.
apstrada_gajienu(), rezultats vai routes.py.Pārbaudi, vai algoritms darbojas paredzami ar dažādiem datiem.
Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
# Vienkāršs aprakts: kas notiek, kad lietotājs nospiež "Sūtīt"
# 1. FRONTEND (browser)
# fetch("/api/saglabat", { method: "POST", body: ... })
# 2. BACKEND (Python serveris)
@app.route("/api/saglabat", methods=["POST"])
def saglabat():
dati = request.json
# 3. DATUBĀZE
cur.execute("INSERT INTO ... VALUES (%s)", (dati["x"],))
conn.commit()
# 4. ATPAKAĻ FRONTEND
return jsonify({"status": "ok"}), 201