Pullo mallit
Flask käyttää malleja verkkosovelluksen toiminnallisuuden laajentamiseen säilyttäen samalla yksinkertaisen ja järjestetyn tiedostorakenteen. Mallit otetaan käyttöön Jinja2-mallimoottorilla, ja ne mahdollistavat tietojen jakamisen ja käsittelyn ennen kuin ne siirretään sisältöön ja lähetetään takaisin asiakkaalle.
render_template
Toiminto
Therender_template()
toiminto tekee HTML-tiedostot näytettäväksi web-selaimessa Jinja2-mallimoottorin avulla. Sen ainoa sijaintiargumentti on hahmonnettavan mallin nimi. Avainsanaargumentteja voidaan lisätä tukemaan mallin sovellusmuuttujia.
missärender_template
käsittelee mallitiedostoja "mallit"-hakemistossa. Mallit-hakemisto, joka sijaitsee käynnissä olevan sovelluksen hakemistossa.
├── app_dir│ ├── mallit│ │ ├── my_template.html│ ├── app.py
Mallin muuttujat
Mallin muuttujat ovat sovellustietojen esityksiä, joita käytetään mallien sisällä. Luotu käyttämällä avainsanaargumenttejarender_template
, mallimuuttujat korvataan malliksi, kun käytetään lausekkeen erottimia{{ }}
Käytetään Jinja-malleissa, lausekkeiden erottimissa{{ }}
surround-ilmaisuja, kuten muuttujia, jotka mallimoottori tunnistaa.
palatarender_template('my_template.html',malli_muuttuja1=pullo_var1,malli_muuttuja2=flask_var2)
## Mallin muuttujat korvataan nimellä "my_template.html" seuraavassa muodossa
## {{ template_var1 }} ja {{ template_var2 }}
Mallin muuttujasuodattimet
Suodattimia käytetään mallimuuttujiin ja ne suorittavat pienen kohdistetun toiminnon. Suodattimet seuraavat muuttujaa ja ne erotetaan putkella,|
, hahmo. Tämä syntaksi toimii lausekkeen sisällä{{ }}
ja lausunto{% %}
erottimet.
Lisätietoja suodattimista löytyy osoitteestaJinja-dokumentaatio.
<h1>{{ heading_var | ylös }}h1>
(Video) Python Web Apps with Flask by Ezra Zigmond<h1>{{ no_var | oletus ("Oma verkkosivusto") }}h1>
Sapluunajos
lausunnot
{% jos ehto %}
lauseita käytetään malleissa ohjaamaan sisältöä, joka palautetaan Flask-reiteiltä. Sisältö liittyy anjos
lauseke on suljettu lohkoihin, jotka alkavat{% jos ehto %}
ja lopettaa kanssa{% loppu Jos %}
.muu
jaelif
kanssa voidaan käyttääjos
lausunnot sisällön hallitsemiseksi edelleen.
Lausekkeiden erottimet{% %}
surround-ohjauslausekkeet, kutenjos
javarten
tunnistaa Jinja 2 -mallimoottorista.
<html>
<kehon>
<h1>
{% if template_feel == 'onnellinen' %}
Tämä sivu on onnellinen
{% elif template_feel == 'sad' %}
Tämä sivu on surullinen
{% muuta %}
Tämä sivu ei ole varma, miltä se tuntuu
{% endfor %}
h1>
kehon>
html>
Sapluunavarten
Silmukat
For looppeja käytetään malleissa sisällön toistamiseen tai tietojen iterointiin Jinja2-mallimoottorin käsittelyn aikana. For-silmukat sisältyvät lauseen erottimiin seuraavalla syntaksilla {% for local_var in iterator %}. Lohkon sisällä oleva sisältö toistetaan kohdassa, jossa lohko alkaavarten
lauseke ja sen sulkee {% endfor %}.
Lausekkeiden erottimet{% %}
surround-ohjauslausekkeet, kutenjos
javarten
tunnistaa Jinja 2 -mallimoottorista.
<ul>
{% sisällön_kohdalle sisältöluettelossa %}
<li>content_itemli>
{% endfor %}
ul>
Mallin perintö
Jinja-mallit käyttävät periytymistä jakaakseen sisältöä yhdestä mallista useisiin malleihin.
Thelohko
lauseketta käytetään tunnistamaan sijainti kussakin tiedostossa periytymisen määrittämiseksi. Päätiedostossa{% eston tunniste %}
ja{% endblock %}
käytetään tunnistamaan, millä rivillä peritty sisältö korvataan. Lapsitiedostossa{% eston tunniste %}
ja{% endblock %}
ympäröivät korvattavan sisällön.
Theulottuu
lauseke identifioi päätiedoston, jonka kanssa toinen malli jakaa sisältöä. Lisätty alatason tiedoston yläosaan,{% laajentaa tiedostonimeä %}
määrittää, mikä päätiedosto lisätäänlohko
sisällön sisään.
<html>
<kehon>
{% block content %}{% endblock %}
kehon>
html>
{% extends base.html %}
{% block content %}
<s>Periöntymisen vuoksi tässä tiedostossa on html- ja body-tageja.s>
{% endblock %}
Flask Web Forms
Flask tarjoaa yksinkertaisen työnkulun verkkolomakkeiden toteuttamiseen ja tietojen keräämiseen samalla kun varmistetaan lomakkeiden oikea validointi. Moduuleilla WTForms ja Flask-WTF voidaan luoda lomakkeita luokkarakenteen avulla lomakeelementtien luomiseksi ja niiden tietojen keräämiseksi perittyjen toimintojen kautta. Pyynnöt voidaan analysoida käyttämällä pullojapyyntö
esine.
pyyntö
Esine
Kun kyse on HTML-verkkolomakkeista, Flaskpyyntö
Objekti tarjoaa tavan kerätä tietoja asiakkaan POST-pyynnön kautta. Lomakekentän tietoihin pääsee käsiksi käyttämällä kentän nimeä pyyntöobjektien avaimenamuodossa
attribuutti.
Pullon reitti on lisättävä"LÄHETTÄÄ"
siihenmenetelmiä
avainsana-argumentti. Oletuksenamenetelmiä
on asetettu["SAADA"]
.
## käyttää tietoja "first_name"-kentästä
@sovellus.reitti('/',menetelmiä=["SAADA", "LÄHETTÄÄ"])
def indeksi():
jos len(pyyntö.muodossa) > 0:
nimi_tiedot=pyyntö.muodossa["etunimi"]
url_for
Toiminto
Toimintourl_for()
käytetään mallissa sivuston navigoimiseen reittifunktioiden nimien eikä mahdollisesti haihtuvien URL-merkkijonojen kautta. Kutsumusurl_for()
jonka parametri on reittifunktion nimi, se on turvallisempi tapa osoittaa reitit malleissa, koska URL-merkkijonot voivat muuttua sivustojen tiedostorakenteen muuttamisen perusteella.
Theurl_for()
funktiota on kutsuttava lausekkeen erottimien sisällä{{ }}
jotta Jinja2-mallimoottori käsittelee sen. Avainsanaargumentteja voidaan lisätä funktiokutsuun muuttujien välittämiseksi Flask-sovelluksen reitille.
<a href="{{ url_for('index') }}">Linkki hakemistoona>
<a href="{{ url_for('other_route', route_var=some_template_var) }}">Toinen reitti muuttujallaa>
FlaskForm
Luokka
PerittyFlaskForm
luokka antaa sovelluksen määrittämälle luokalle toimintoja, kuten malliesityksen, tiedon keräämisen ja validoinnin. Yhdessä WTForm-kenttien kanssa käytetty FlaskForm-toiminto tarjoaa helpon polun lomakkeiden näyttöön ja kelvollisten tietojen keräämiseen sovelluksessa.FlaskForm
tuodaan maahanflask_wtf
moduuli.
The"SALAINEN AVAIN"
muuttuja Flask-sovelluksen kokoonpanossa on asetettava, jotta CSRF-suojaus voidaan ottaa käyttöön. Tämä on tarpeen lomakkeiden luomiseksi käyttämälläFlaskForm
.
alkaenpullotuontiPullo
alkaenflask_wtftuontiFlaskForm
sovellus=Pullo(__nimi__)
sovellus.config["SALAINEN AVAIN"] = "salainen_merkkijono"
luokkaa Oma Lomake(FlaskForm):
## Lomakeelementit alustettu tässä
WTForm-kentät
WTForm-kenttäobjektit ovat yksinkertainen tapa toteuttaa verkkolomakekenttiä, kuten tekstikenttiä ja lähetyspainikkeita. Tuotu osoitteestawtforms
moduuli ja alustettu FlaskForm-alaluokkaan, kenttäobjektit tarjoavat verkkolomakkeen elementtien esityksen ja toiminnallisuuden. Joitakin yleisiä kenttäobjektien tehtäviä ovat tarranhallinta, kentän validointi ja tietojen käsittely.
Tässä on yksityiskohtainen luetteloWTForm-kentätja niiden toimivuudesta. Joitakin yleisiä käytettyjä kenttiä ovat:
- Merkkijonokenttä()
- SubmitField()
- TextAreaField()
- BooleanField()
- Radiokenttä()
alkaenflask_wtftuontiFlaskForm
alkaenwtformstuontiStringField,Lähetä kenttä
luokkaa Oma Lomake(FlaskForm):
myStringField("Minun tekstini")
mySubmitField("Lähetä lomake")
Lomakkeen validointi
Verkkolomakkeen validointi on prosessi, jolla varmistetaan, että lomake kerää oikeat tiedot ennen kuin se lähetetään palvelimelle käsittelyä varten.
Verkkolomakkeessa validaattoreita käytetään tunnistamaan kentät, jotka vaativat tiettyjä tietoja tai muotoja lomakkeen lähettämisen yhteydessä. Tämä voi olla niinkin yksinkertaista kuin tietojen vaatiminen tarkempiin muotoihin, kuten päivämääriin, puhelinnumeroihin ja sähköpostiosoitteisiin. Lomakekenttien tarkistajat voidaan lisätä kentän ilmentymiseen ja ne tuodaan kentästäwtforms.validators
moduuli. TarkistaWTForms Validators -dokumentaatioLisätietoja.
Thevalidate_on_submit()
-toiminto on osa FlaskForm-luokkaa ja sitä käytetään reitin kanssa osoittamaan, milloin kelvolliset lomaketiedot on lähetetty. Tämä luo ylimääräisen haaran reitille, jossa tietojenkäsittely voi tapahtua.
# Validointiesimerkkejä
alkaenpullotuontiPullo
alkaenflask_wtftuontiFlaskForm
alkaenwtformstuontiStringField
alkaenwtforms.validaattorittuontiDataRequired,Sähköposti
sovellus=Pullo(__nimi__)
luokkaa Oma Lomake(FlaskForm):
my_field=StringField("Sähköposti",validaattorit=[DataRequired(),Sähköposti()])
@sovellus.reitti('/',menetelmiä=["SAADA", "LÄHETTÄÄ"])
def minun_reittini():
minun_lomake=Oma Lomake()
josminun_lomake.validate_on_submit():
my_data=minun_lomake.my_field.tiedot
redirect()
Toiminto
Theredirect()
-toimintoa käytetään Flask-sovelluksessa siirtymiseen reitiltä toiselle. Käytetty reiteilläpalata
lausunto,redirect()
käyttää URL-merkkijonoa argumenttina tunnistaakseen oikean reitin, jolle hypätä. Monessa tapauksessaredirect()
kanssa käytetäänurl_for()
argumenttina välttää URL-merkkijonojen käyttöä.
Uudelleenohjaaminen uudelle reitille on hyödyllistä monista syistä. Yleensä uudelleenohjaus tapahtuu sen jälkeen, kun tietty prosessi on tehty yhdellä reitillä ja toisen reitin logiikkaa tarvitaan. Uudelleenohjaus voi tapahtua sen jälkeen, kun lomake on käsitelty lomakkeen alkuperäisellä reitillä ja mallin renderöiminen uudella reitillä on toivottavaa.
# hanki lomaketiedot ja lähetä osoitteeseen route_two uudelleenohjauksella
@sovellus.reitti("/1")
def reitti_yksi():
minun_lomake=Oma Lomake()
josminun_lomake.validate_on_submit():
my_data=minun_lomake.my_field.tiedot
palatauudelleenohjaus(url_for("reitti_kaksi",tiedot=my_data))
palatarender_template("one.html",template_form=minun_lomake)
# renderöi malli jossa on tietoja
@sovellus.reitti("/2/")
def reitti_kaksi(tiedot):
palatarender_template("kaksi.html",template_data=tiedot)
Pieni nuoli vasen kuvakeEdellinen