Ich versuche, einige Arbeitscode als eine Klasse neu zu schreiben.Verwenden von Routen in Klassen
Ein minimaler Arbeitscode:
from flask import Flask
app = Flask(__name__)
@app.route("/1")
def func_1():
return "view 1"
@app.route("/2")
def func_2():
return "view 2"
app.run()
Wie es als eine Klasse mit der Strecke während des Objektinstanziierung definiert schreiben?
Ich möchte es nur sauber: nach der Instantiierung eines Objekts möchte ich die entsprechende Route bereits ohne zusätzliche Codezeilen arbeiten.
Dies ist das nächste, was ich zu bekommen:
from flask import Flask
class NewView:
def __init__(self, url, string):
self.string = string
self.server = Flask(__name__)
self.server.add_url_rule(url, 'index', self.index)
def index(self):
return self.string
v1 = NewView("/1", "view 1")
v2 = NewView("/2", "view 2")
v1.server.run()
Das ist natürlich erkennt /1
als Weg für v1.index(), aber /2
funktioniert nicht.
Das Ideal wäre etwa wie folgt sein, aber ich kann es nicht funktioniert:
from flask import Flask
app = Flask(__name__)
class NewView:
def __init__(self, url, string):
....
app.add_url_rule(url, ...?..., self.index)
def index(self):
return self.string
v1 = NewView("/1", "view 1")
v2 = NewView("/2", "view 2")
app.run()
Ich denke, was Sie wollen, ist hier dokumentiert http://flask.pooco.org/docs/0.12/views/ - mit 'add_url_rule' außerhalb der Klasse und' app.add_url_rule ('/ 1', view_func = NewView .as_view ('index')) 'vielleicht? –
@Simon Fraser, ja, das ist eine Möglichkeit, aber ich möchte alle innerhalb der Klasse "enthalten", um den Code sauber zu halten, add_url_rule enthalten. Ich kann keinen direkten Weg finden, es zu tun. –