Learn Flask: Jinja2-mallit ja -lomakkeet Cheatsheet | Codecademy (2023)

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_templateToiminto

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_templatekä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>

Sapluunajoslausunnot

{% jos ehto %}lauseita käytetään malleissa ohjaamaan sisältöä, joka palautetaan Flask-reiteiltä. Sisältö liittyy anjoslauseke on suljettu lohkoihin, jotka alkavat{% jos ehto %}ja lopettaa kanssa{% loppu Jos %}.muujaelifkanssa voidaan käyttääjoslausunnot sisällön hallitsemiseksi edelleen.

Lausekkeiden erottimet{% %}surround-ohjauslausekkeet, kutenjosjavartentunnistaa 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>

SapluunavartenSilmukat

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 alkaavartenlauseke ja sen sulkee {% endfor %}.

Lausekkeiden erottimet{% %}surround-ohjauslausekkeet, kutenjosjavartentunnistaa 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.

Thelohkolauseketta 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.

Theulottuulauseke 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äänlohkosisä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 avaimenamuodossaattribuutti.

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_forToiminto

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>

FlaskFormLuokka

PerittyFlaskFormluokka 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.FlaskFormtuodaan maahanflask_wtfmoduuli.

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 osoitteestawtformsmoduuli 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.validatorsmoduuli. 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äpalatalausunto,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

Lue lisää Codecademysta

CourseLearn FlaskLuo täysin varusteltuja, vuorovaikutteisia verkkosovelluksia FlaskChecker DenseCertificate IconWith CertificateCheckerillä DenseLevel IconIntermediate8 Lessonsilla
Taitopolku Python-verkkosovellusten rakentaminen Flaskin avulla Opi koodaamaan Pythonilla, suunnittelemaan ja käyttämään tietokantoja, luomaan interaktiivisia verkkosovelluksia ja jakamaan sovelluksiasi maailman kanssa.Checker DenseSisältää 8 kurssiaChecker DenseCertificate -kuvakkeen ja varmenteentarkistajan DenseLevel Icon Intermediate20 oppituntia
Top Articles
Latest Posts
Article information

Author: Clemencia Bogisich Ret

Last Updated: 29/08/2023

Views: 6065

Rating: 5 / 5 (60 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Clemencia Bogisich Ret

Birthday: 2001-07-17

Address: Suite 794 53887 Geri Spring, West Cristentown, KY 54855

Phone: +5934435460663

Job: Central Hospitality Director

Hobby: Yoga, Electronics, Rafting, Lockpicking, Inline skating, Puzzles, scrapbook

Introduction: My name is Clemencia Bogisich Ret, I am a super, outstanding, graceful, friendly, vast, comfortable, agreeable person who loves writing and wants to share my knowledge and understanding with you.