Ĉi tio estas maŝine tradukita teksto kiu povas enhavi erarojn!
Neniaj solvoj?!
Ĉi tiu Nivelo ne havas rektajn solvojn! Ĉi tie la taskoj estas multe aranĝitaj por ke vi povu eksperimenti memstare.
Tasko 1 - JavaScript
Aldonu JavaScript-skripton al via ŝablono (de Nivelo 3).
Hint
Ĉi tie ankaŭ url_for estas uzata por ligi. Metu la dosieron en static.
Tasko 2 - Serĉkampo
JavaScript refresher.
Ĉu vi bezonas refreŝigon pri JavaScript, vi povas iri tien: JavaScript w3schools aŭ Mozilla Web Docs.
Aldonu serĉkampeton al la retejo. Vi povas aldoni eblecon por serĉi laŭ:
- Nomo kaj familia nomo
- Telefonnumero
- Adreso
- Laboro
Tasko 4 - Aldoni Kontaktojn
JSON (Momoa)
Estus saĝe nun refari app.py por konservi la kontaktojn en .json-dosiero.
Rigardu kiel tio povas esti farita ĉi tie: JSON.
Aldonu butonon per kiu vi povas aldoni kontaktojn al via paĝo. Tio ne bezonas esti pli komplika ol uzi HTML Form kun kelkaj <input> kampoj por la diversaj valoroj de kontakto.
Poste, vi povas stiligi la paĝon iomete por ke ĝi aspektu iom pli profesia.
How!?
Estas saĝe rigardi HTTP Methods sur la propraj paĝoj de Flask.
Tasko 5 - Paĝigado
Aldonu “paĝigadon” al la kontakto listo. Tio estas la ebleco havi kelkajn kontaktojn sur unu paĝo kaj pli sur la sekva paĝo. Vi povas fari tion per uzi vojon kiel ĉi tiu:
@app.route('/contacts/<int:page>')
def paginate(page):
# kodo por akiri "paĝon"
Vi ekzemple povas ĉi tie meti limon je 5 aŭ 10 kontaktoj por paĝo, poste krei butonojn por iri al la sekva paĝo kaj la antaŭa paĝo.
Pli daŭre
Se vi sentas eksperimenti pli daŭre kun aferoj: jen superrigardo de ĉiuj blokoj en Jinja, kion ili faras kaj kiel vi uzas ilin. Estas ankaŭ multe da bongustaĵoj troveblaj en la propraj paĝoj de Flask kaj Jinja Flask Documentation kaj Jinja Documentation.
| Bloko | Celo | Ekzemplo |
|---|---|---|
if / elif / else | Kontroli valorojn | {% if user.is_admin %}Bonvenon administranto{% else %}Saluton uzanto{% endif %} |
for | “Loopi” super elementoj | {% for item in items %}{{ item }}{% endfor %} |
set | Fiksi variablon | {% set total = price * qty %}Totalo: {{ total }} |
with | Temporaj variabloj | {% with u = users[0] %}{{ u.name }}{% endwith %} |
block | Definas superŝargeblan regionon | {% block content %}...{% endblock %} |
extends | Konstrui sur alia ŝablono | {% extends "base.html" %} |
include | Enmeti alian ŝablonon | {% include "menu.html" %} |
macro | Funkcio, kiun vi povas rekuzi | {% macro user(u) %}{{ u.name }}{% endmacro %} |
call | Uzi makron | {% call mymacro() %}content{% endcall %} |
filter | Filtrado sur bloko | {% filter upper %}hello{% endfilter %} |
raw | Ignori Jinja ene de bloko | {% raw %}{{ not_eval }}{% endraw %} |
do | Ruli kodon sen elprinti | {% do items.append("new") %} |
