Die folgenden Artikel werden nicht regelmäßig mit flask-classy geschrieben, sondern während des Studiums nach Bedarf. Wenn Sie Fehler finden, senden Sie bitte eine Bearbeitungsanfrage oder weisen Sie in den Kommentaren darauf hin. Vielen Dank.
Eines der leichtgewichtigen Web-Frameworks, die in Python verfügbar sind, ist flask.
Wenn Sie flask verwenden, erstellen Sie normalerweise eine Anwendung mit Dekoratoren und Funktionen. Wenn Sie jedoch versuchen, eine große Webanwendung über mehrere Dateien hinweg zu erstellen, verwenden Sie einen Typ namens Blueprint. Du musst mit Gonyo Gonyo spielen.
Flask-Classy kann eine einheitliche Routing-Methode einführen, ohne sich damit herumschlagen zu müssen.
https://pythonhosted.org/Flask-Classy/
Ich werde es grob unter Bezugnahme auf die obige Seite beschreiben.
pip install flask-classy
from flask import Flask
from flask.ext.classy import FlaskView
app = Flask(__name__)
class HelloView(FlaskView):
def index(self):
return "hello world"
HelloView.register(app)
if __name__ == '__main__':
app.run()
Wenn Sie die obige Datei über die Befehlszeile starten, sollten Sie auf `localhost: 5000 / hello``` zugreifen und die Zeichenfolge`
hello world``` sehen können.
Bitte beachten Sie, dass der Prozess der Registrierung von "3" in den folgenden Beispielen übersprungen wird.
flaskview
Für Klassennamen, die von erben, als Suffixview
Kann verwendet werden.
helloview
Die URL entspricht/hello/
Es wird sein.
"Es kann verwendet werden", so dass es kein Problem gibt, auch wenn Sie kein Suffix verwenden
flaskview
Vererbthello
Selbst wenn Sie eine Klasse erstellen, lautet die entsprechende URL/hello/
Es wird sein.
Obwohl es in der minimalen Verwendung aufgetreten ist, sind die folgenden Methoden vorbestimmt, um in den Klassen weitergeleitet zu werden, die von FlaskView erben.
Methodenname | Routing | http-Methode |
---|---|---|
index | /Klassendefinition/ | get |
get | /Klassendefinition/ | get |
post | /Klassendefinition/ | post |
put | /Klassendefinition/ | put |
patch | /Klassendefinition/ | patch |
delete | /Klassendefinition/ | delete |
Zusätzlich zu den üblichen Python-Namenskonventionen werden in FlaskView die folgenden Methodennamen verwendet und sollten vermieden werden.
Auf andere Methodennamen als die oben genannten kann wie folgt zugegriffen werden.
URL | http-Methode |
---|---|
/Klassendefinition/Methodenname |
get |
Es sind auch einige andere spezielle Methodennamen definiert.
Methodenname | Funktion |
---|---|
before_request | Wird ausgeführt, bevor die in der Klasse definierte Methode ausgeführt wird |
before_Name der Zielmethode | Wird ausgeführt, bevor die in der Klasse definierte Zielmethode ausgeführt wird |
after_request | Wird ausgeführt, nachdem die in der Klasse definierte Methode ausgeführt wurde |
after_Name der Zielmethode | Wird ausgeführt, nachdem die in der Klasse definierte Zielmethode ausgeführt wurde |
Wird in der Reihenfolge von sein
Die URL wird durch den Klassennamen und den Funktionsnamen bestimmt. Hier sind jedoch einige Maßnahmen, um dies zu vermeiden.
Es gibt zwei Möglichkeiten
class HelloView(FlaskView):
route_base='/'
HelloView.register(app, route_base='/')
Beide oben genannten überschreiben `/ hello```, was aus dem Klassennamen definiert werden sollte, und machen es mit`
/ `` `zugänglich.
Dies ist eine Möglichkeit
from flask.ext.classy import FlaskView, route
class HelloView(FlaskView):
@route('/hoge/')
def index(self):
return 'hello'
Wie oben erwähnt, verwenden Sie für die Methode der Klasse, die `FlaskView``` erbt,`
route, definiert in `` `flask.ext.classy
Sie können das Routing überschreiben, indem Sie es dekorieren.
Im Fall des obigen Beispiels kann darauf zugegriffen werden, wenn die URL `/ hello / hoge /`
lautet.
flask.ext.Die classsy route kann genau die gleichen Argumente wie die flask route annehmen.
** Wie bei einem normalen Kolben können Sie nur durch Definieren von Methoden und Routing GET-Zugriff erhalten. ** **.
Wenn Sie eine andere http-Methode als GET hinzufügen möchten, übergeben Sie eine Liste mit dem Namen `` `Methoden``` an das Argument` `` @ route```.
Derzeit scheint es, dass jede Zeichenfolge zum Element der Liste gelangen kann (Überprüfung erforderlich), aber ich denke, dass dies in Ordnung, aber nicht rentabel ist.
Lassen Sie uns eine normale HTTP-Methode einfügen.
Unten ist ein Beispiel.
```python3
from flask.ext.classy import FlaskView, route
class HelloView(FlaskView):
@route('/index/', methods=['GET','POST'])
def index(self):
return 'hello'
Wie oben erwähnt, können Sie durch Hinzufügen von `` `Methoden``` mit der entsprechenden HTTP-Methode zugreifen.
Recommended Posts