Flask Framework
Flask è un micro-framework che ha pochissima dipendenza dalle librerie esterne. È un quadro molto leggero e ci dà la libertà di fare quello che vogliamo.
In questo capitolo, costruiremo un progetto utilizzando il framework Python e Flask.
Avvio e configurazione di Flask
Come la maggior parte delle librerie Python ampiamente utilizzate, il pacchetto Flask è installabile da Python Package Index (PPI). Creiamo prima una directory (in questo capitolo abbiamo creato una directory chiamataflaskProject) quindi ha creato un ambiente virtuale (e lo ha chiamato come flaskEnv) dove verranno caricate tutte le dipendenze relative al progetto (compreso il flask). È inoltre possibile installare flask-sqlalchemy in modo che l'applicazione flask abbia un modo semplice per comunicare con il database SQL.
Dopo aver installato il flask, il tuo flaskEnv (il nome del nostro ambiente virtuale) mostrerà qualcosa come di seguito:
Creazione di un'app con flask
Installando il flask, possiamo creare un semplice "hello application in flask"Con pochissime righe di codice come segue:
Digita quanto segue nel terminale:
$python flaskapp.py
E puoi vedere il seguente output:
In esecuzione http://127.0.0.1:5000/ o su localhost:5000
Di seguito è riportata la spiegazione di ciò che abbiamo fatto nel nostro codice di esempio:
Innanzitutto, importiamo la libreria di classi Flask. Un'istanza di questa classe è l'app WSGI.
In secondo luogo, creiamo un'istanza di questa classe. Il pacchetto dell'applicazione o il nome del modulo è il nostro primo argomento. È obbligatorio che flask sappia dove trovare file statici, modelli e altri file.
Il prossimo è il decoratore route () che usiamo per sapere quale URL dovrebbe attivare il nostro metodo / funzione.
Creazione del routing URL
Il routing degli URL semplifica la memorizzazione degli URL nella tua app Web. Creeremo ora alcuni percorsi URL:
/hello
/members
/members/name
Possiamo scrivere il seguente codice basato sull'URL sopra e salvarlo come app.py.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return "Index!"
@app.route('/Hello')
def hello():
return "Hello, World!"
@app.route("/members")
def members():
return "Members"
@app.route("/members/<name>/")
def getMember(name):
return name
if __name__ == '__main__':
app.run(debug=True)
Al riavvio dell'applicazione, utilizziamo le seguenti righe di codice per ottenere diversi output su vari URL:
$ python app.py
Running on http://localhost:5000/
Otterremo il seguente output nel nostro browser:
Possiamo provare altri URL nel nostro browser come segue:
Running on http://localhost:5000/hello, will give the following output −
Running on http://localhost:5000/members, will give −
Running on http://localhost:5000/members/TutorialsPoint/, will give you the following output −
Ma normalmente non vogliamo restituire una stringa (come sopra), restituiamo modelli. Per questo vogliamo utilizzare una funzione "render_template"Da flask e restituire render_template con un input. Quindi, la funzione sottostante farà il nostro lavoro -
from flask import render_template
return render_template(‘home.html’)
Creiamo un modello di cartella e inseriamo il file home.html al suo interno.
Successivamente, discuteremo del layout. Invece di utilizzare tag head e body tag HTML per ogni singolo modello, progetteremo un layout per includere tag head e body e avvolgere le viste correnti o il modello corrente. Per questo, dobbiamo creare un file separato e chiamarlolayout.html. In questo, possiamo mettere il nostro normale tag head, body tag e tutti gli altri tag richiesti.
Possiamo creare il nostro nuovo layout.html con le seguenti righe di codice:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>MyFlaskApp</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
</head>
<body>
{% include 'includes/_navbar.html' %}
<div class="container">
{% block body %}
{% endblock %}
</div>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js">
</script>
</body>
</html>
Nel codice sopra, abbiamo dato la traccia del titolo, MyFlaskAp, usa css cdn nella testa e javascript nel blocco del corpo per abilitare il bootstrap.
Ora dobbiamo creare la barra di navigazione per ogni singola pagina. Per questo, dobbiamo prima creare una cartella di inclusione e quindi creare il file _navbar.html al suo interno. Ora in _navbar.html, dobbiamo utilizzare il modello di avvio standard da getbootstrap.com. Il file _navbar.html appena creato sarà il seguente:
E includi questo file _navbar.html nel nostro file layout.html.
{% include 'includes/_navbar.html' %}
Dato che abbiamo il blocco di layout, possiamo estendere questo blocco nel nostro file home (home.html).
Il nostro file home.html può essere creato utilizzando il codice seguente:
{% extends 'layout.html' %}
{% block body %}
<div class="jumbotron text-center">
<h1>Welcome to FlaskApp</h1>
<p>This application is built on Flask webframework!</p>
</div>
{% endblock %}
Usandolo se proviamo a eseguire il nostro file flaskapp.py, potremmo vedere l'output seguente nel nostro browser:
Ora vogliamo attivare (attualmente le schede non funzionano) il nostro abouttab. Crea un percorso per la scheda Informazioni e crea un file modello,about.html.
Informazioni sul percorso della scheda in appflask.py sarà come mostrato di seguito:
Il file about.html avrà il contenuto seguente:
Quindi Home e About sono ora occupati. Per gli articoli, possiamo creare un nuovo file (data.py) nella directory principale, dove inseriamo i dati e li chiamiamo nella nostra pagina web.
data.py
def Articles():
articles = [
{
'uid': 1,
'title': 'Article_One',
'body': 'Flask, being a microframework, often requires some repetitive step
to get a third party library working. Because very often these steps could
be abstracted to support multiple projects the Flask Extension Registry
was created.',
'Author': 'Rajesh Joshi',
'Created-on': '07-09-2018'
},
{
'uid': 2,
'title': 'Article_Two',
'body': "Flask, being a microframework, often requires some repetitive steps
to get a third party library working. Because very often these steps could
be abstracted to support multiple projects the Flask Extension Registry
was created.",
'Author': 'Rajesh J',
'Created-on': '07-09-2018'
},
{
'uid': 3,
'title': 'Article_Three',
'body': 'Flask, being a microframework, often requires some repetitive steps
to get a third party library working. Because very often these steps could be
abstracted to support multiple projects the Flask Extension Registry
was created.',
'Author': 'Joshi Rajesh',
'Created-on': '07-09-2018'
}
]
return articles
Di seguito è riportato il codice per articles.html, che mostrerà i titoli degli articoli per ogni uid.
{% extends 'layout.html' %}
{% block body %}
<h1>Articles</h1>
{% for article in articles %}
<li class="list-group-item">
<a href="article/{{article.uid}}"> {{article.title}}</a>
</li>
{% endfor %}
{% endblock %}
Per riassumere, Flask è uno dei framework web Python più popolari grazie alla sua leggerezza. Sebbene sia micro, è un framework web Python estensibile. Fornendo la funzionalità richiesta, flask accelera lo sviluppo di semplici applicazioni web. Quindi Flask è più adatto per applicazioni più piccole e meno complicate.