Python-Lern-Framework

Nachdem wir das WSGI-Framework verstanden hatten, stellten wir Folgendes fest: Tatsächlich muss eine Web-App eine WSGI-Verarbeitungsfunktion schreiben, um auf jede HTTP-Anforderung zu antworten.

Der Umgang mit HTTP-Anfragen ist jedoch kein Problem. Das Problem ist der Umgang mit 100 verschiedenen URLs.

Jede URL kann GET- und POST-Anforderungen entsprechen, und natürlich gibt es PUT-, DELETE- und andere Anforderungen, aber wir berücksichtigen normalerweise nur die häufigsten GET- und POST-Anforderungen.

Eine der einfachsten Ideen besteht darin, die Informationen der HTTP-Anforderung aus der Umgebungsvariablen zu extrahieren, um sie einzeln zu beurteilen:

def application(environ, start_response):
    method = environ['REQUEST_METHOD']
    path = environ['PATH_INFO']
    if method=='GET' and path=='/':
        return handle_home(environ, start_response)
    if method=='POST' and path='/signin':
        return handle_signin(environ, start_response)
    ...

Nur den Code so aufzuschreiben, ist definitiv unmöglich zu pflegen.

Der Grund, warum der Code nicht gepflegt werden kann, ist, dass die von WSGI bereitgestellte Schnittstelle zwar viel höher als die HTTP-Schnittstelle ist, aber im Vergleich zur Verarbeitungslogik von Web App immer noch relativ niedrig ist. Wir müssen die WSGI-Schnittstelle weiter abstrahieren . lassen Sie uns konzentrieren Für eine URL mit einer Funktion der Verarbeitung , wird die Zuordnung von URL - Funktion auf den Web - Framework links.

Da es sehr einfach ist, ein Webframework mit Python zu entwickeln, gibt es Hunderte von Open-Source-Webframeworks für Python. Hier werden wir nicht die Vor- und Nachteile verschiedener Web-Frameworks diskutieren und direkt eine populärere Web-Framework-Flasche zur Verwendung auswählen.

Das Schreiben einer Web-App mit Flask ist einfacher als die WSGI-Oberfläche (ist das nicht Unsinn, wenn es komplizierter als WSGI ist, warum ein Framework verwenden?). Wir installieren Flask zuerst mit pip:

$ pip install flask

Schreiben Sie dann eine app.py, um 3 URLs zu verarbeiten:

  • GET /: Homepage, zurück zur Homepage;
  • GET / signin: Anmeldeseite, Anmeldeformular anzeigen;
  • POST / Anmeldung: Verarbeiten Sie das Anmeldeformular und zeigen Sie das Anmeldeergebnis an.

Beachten Sie, dass dieselbe URL / Anmeldung zwei Arten von Anforderungen enthält, GET und POST, die zwei Verarbeitungsfunktionen zugeordnet sind .

Flask ordnet URLs über Python- Dekoratoren automatisch Funktionen zu, sodass der von uns geschriebene Code folgendermaßen aussieht:

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def home():
    return '<h1>Home</h1>'

@app.route('/signin', methods=['GET'])
def signin_form():
    return '''<form action="/signin" method="post">
              <p><input name="username"></p>
              <p><input name="password" type="password"></p>
              <p><button type="submit">Sign In</button></p>
              </form>'''

@app.route('/signin', methods=['POST'])
def signin():
    # 需要从request对象读取表单内容:
    if request.form['username']=='admin' and request.form['password']=='password':
        return '<h3>Hello, admin!</h3>'
    return '<h3>Bad username or password.</h3>'

if __name__ == '__main__':
    app.run()

Führen Sie python app.py aus, Flask 'eigener Server überwacht Port 5000:

$ python app.py 
 * Running on http://127.0.0.1:5000/

Öffnen Sie den Browser und geben Sie die Homepage-Adresse http: // localhost: 5000 /: ein.
Fügen Sie hier eine Bildbeschreibung ein

Die Homepage wird korrekt angezeigt!

Geben Sie dann http: // localhost: 5000 / signin in die Adressleiste des Browsers ein. Das Anmeldeformular wird angezeigt:
Fügen Sie hier eine Bildbeschreibung ein
Geben Sie den voreingestellten Benutzernamen admin und das Kennwort ein, und die Anmeldung ist erfolgreich:

Fügen Sie hier eine Bildbeschreibung ein

Geben Sie einen anderen falschen Benutzernamen und ein falsches Passwort ein. Anmeldung fehlgeschlagen:
Fügen Sie hier eine Bildbeschreibung ein

Die eigentliche Web-App sollte den Benutzernamen und das Kennwort erhalten, zur Abfrage in die Datenbank gehen und vergleichen, um festzustellen, ob sich der Benutzer erfolgreich anmelden kann.

Zu den gängigen Python-Webframeworks gehören neben Flask:

Django: ein vielseitiges Webframework;

web.py: ein kleines Webframework;

Flasche: Web-Framework ähnlich wie Flask;

Tornado: Facebooks Open Source asynchrones Webframework.

Da es nicht schwierig ist, ein Python-Webframework zu entwickeln, werden wir später auch über den Inhalt der Entwicklung eines Webframeworks sprechen.

Zusammenfassung

Mit dem Webframework verlagern wir beim Schreiben von Webanwendungen unsere Aufmerksamkeit von WSGI-Verarbeitungsfunktionen auf URL + entsprechende Verarbeitungsfunktionen . Auf diese Weise wird das Schreiben von Webanwendungen einfacher.

Beim Schreiben von URL-Verarbeitungsfunktionen ist es neben der Konfiguration der URL auch sehr wichtig, Benutzerdaten aus der HTTP-Anforderung abzurufen. Web-Frameworks bieten eine eigene API zur Implementierung dieser Funktionen. Flask erhält den Inhalt des Formulars über request.form ['name'].

Mit anderen Worten, wenn Sie kein Framework benötigen, müssen Sie die WSGI-Verarbeitungsfunktionen selbst schreiben, was für HTTP-Anforderungen und URLs sehr problematisch ist. Nicht nur, um den Anforderungstyp zu bestimmen, sondern auch, um die URL zu bestimmen und dann zu bestimmen, welche Funktion aufgerufen werden soll

Mit dem Framework müssen Sie nur einen Dekorateur hinzufügen, die entsprechende zu verarbeitende URL hinzufügen und die Verarbeitungsfunktion schreiben. (Oh, mir wurde plötzlich klar, dass dies der Zweck des Frameworks ist.)

Ich denke du magst

Origin blog.csdn.net/qq_44787943/article/details/112637223
Empfohlen
Rangfolge