Flask Framework
Flask ist ein Mikro-Framework, das nur sehr wenig von externen Bibliotheken abhängig ist. Es ist ein sehr leichter Rahmen und gibt uns die Freiheit, zu tun, was wir wollen.
In diesem Kapitel erstellen wir ein Projekt mit dem Python- und Flask-Framework.
Start und Konfiguration des Kolbens
Wie die meisten weit verbreiteten Python-Bibliotheken kann das Flask-Paket über den Python Package Index (PPI) installiert werden. Lassen Sie uns zuerst ein Verzeichnis erstellen (In diesem Kapitel haben wir ein Verzeichnis mit dem Namen erstelltflaskProject) erstellte dann eine virtuelle Umgebung (und nannte sie als flaskEnv) wo alle projektbezogenen Abhängigkeiten geladen werden (einschließlich Flasche). Sie können flask-sqlalchemy auch installieren, damit Ihre flask-Anwendung auf einfache Weise mit der SQL-Datenbank kommunizieren kann.
Nach der Installation des Kolbens zeigt Ihr flaskEnv (unser Name für virtualEnvironment) Folgendes an:
Erstellen einer App mit Flasche
Durch die Installation der Flasche können wir eine einfache “hello application in flask”Mit sehr wenigen Codezeilen wie folgt -
Geben Sie Folgendes in das Terminal ein -
$python flaskapp.py
Und Sie können die folgende Ausgabe sehen -
Laufen weiter http://127.0.0.1:5000/ oder weiter localhost:5000
Nachfolgend finden Sie eine Erklärung dessen, was wir in unserem Beispielcode getan haben -
Zunächst importieren wir die Flask-Klassenbibliothek. Eine Instanz aus dieser Klasse ist die WSGI-App.
Zweitens erstellen wir eine Instanz dieser Klasse. Anwendungspaket oder Modulname ist unser erstes Argument. Es ist zwingend erforderlich, dass flask weiß, wo sich statische Dateien, Vorlagen und andere Dateien befinden.
Als nächstes folgt der route () - Dekorator, mit dem wir wissen, welche URL unsere Methode / Funktion auslösen soll.
URL-Routing erstellen
Durch das URL-Routing sind URLs in Ihrer Web-App leicht zu merken. Wir werden jetzt einige URL-Routen erstellen -
/hello
/members
/members/name
Wir können den folgenden Code basierend auf der obigen URL schreiben und ihn als app.py speichern.
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)
Beim Neustart der Anwendung verwenden wir die folgenden Codezeilen, um unterschiedliche Ausgaben für verschiedene URLs zu erhalten.
$ python app.py
Running on http://localhost:5000/
Wir erhalten die folgende Ausgabe in unserem Browser -
Wir können andere URLs in unserem Browser wie folgt ausprobieren:
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 −
Normalerweise möchten wir jedoch keine Zeichenfolge zurückgeben (wie oben), sondern Vorlagen zurückgeben. Dafür wollen wir eine Funktion verwenden “render_template”Aus der Flasche und geben render_template mit einigen Eingaben zurück. Die folgende Funktion erledigt also unsere Arbeit -
from flask import render_template
return render_template(‘home.html’)
Lassen Sie uns eine Ordnervorlage erstellen und die Datei home.html darin ablegen.
Als nächstes werden wir über das Layout diskutieren. Anstatt für jede einzelne Vorlage ein HTML-Head-Tag und ein Body-Tag zu verwenden, entwerfen wir ein Layout, das Head- und Body-Tags enthält und die aktuellen Ansichten oder die aktuelle Vorlage umschließt. Dazu müssen wir eine separate Datei erstellen und aufrufenlayout.html. Hier können wir unser normales Head-Tag, Body-Tag und alle anderen erforderlichen Tags einfügen.
Wir können unsere neue layout.html mit den folgenden Codezeilen erstellen:
<!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>
Im obigen Code haben wir den Titeltrack MyFlaskAp angegeben, verwenden css cdn im Kopf und Javascript im Bodyblock, um den Bootstrap zu aktivieren.
Jetzt müssen wir für jede einzelne Seite eine Navigationsleiste erstellen. Dazu müssen wir zuerst einen Include-Ordner erstellen und dann die Datei _navbar.html darin erstellen. Jetzt müssen wir in der Datei _navbar.html die Standard-Starter-Vorlage von getbootstrap.com verwenden. Die neu erstellte Datei _navbar.html lautet wie folgt:
Fügen Sie diese Datei _navbar.html in unsere Datei layout.html ein.
{% include 'includes/_navbar.html' %}
Da wir den Layoutblock haben, können wir diesen Block in unserer Home-Datei (home.html) erweitern.
Unsere home.html-Datei kann mit dem folgenden Code erstellt werden:
{% 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 %}
Wenn wir damit versuchen, unsere Datei flaskapp.py auszuführen, können wir die folgende Ausgabe in unserem Browser sehen -
Jetzt möchten wir unsere aktivieren (derzeit funktionieren die Registerkarten nicht) aboutTab. Erstellen Sie eine Route für die Registerkarte "Info" und erstellen Sie eine Vorlagendatei.about.html.
Informationen zur Registerkarte Route in appflask.py finden Sie wie folgt:
Die Datei about.html enthält den folgenden Inhalt:
So sind nun Home und About erledigt. Für Artikel können wir eine neue Datei (data.py) im Stammverzeichnis erstellen, in der wir die Daten ablegen und auf unserer Webseite aufrufen.
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
Unten ist der Code für articles.html, in dem Artikeltitel für jede UID angezeigt werden.
{% 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 %}
Zusammenfassend ist Flask aufgrund seines geringen Gewichts eines der beliebtesten Python-Webframeworks. Obwohl es sich um ein Mikro handelt, handelt es sich um ein erweiterbares Python-Webframework. Durch die Bereitstellung der erforderlichen Funktionalität beschleunigt flask die Entwicklung einfacher Webanwendungen. So ist Flask besser für kleinere, weniger komplizierte Anwendungen geeignet.