Flask nécessite un mappage explicite des URL et des méthodes, comme indiqué ci-dessous.
# '/'Appelez la méthode d'index lors de l'accès
@app.route("/"):
def index():
return "<h1>Hello, World!</h1>"
Par exemple, comment en faire un formulaire qui appelle automatiquement la méthode d'index du contrôleur Hello (style comme Rails ou CakePHP) lorsque "/ Hello / index" est accédé.
app.py
from flask import Flask
import importlib
app = Flask(__name__)
@app.route("/<path:path>")
def router(path):
path = path.split("/")
module_name = "Controller." + path[0]
module = importlib.import_module(module_name)
method = getattr(module, path[1])
return method()
Controller/Hello.py
def index():
return "<h1>Hello, Controller!</h1>"
Si vous spécifiez "\ <chemin: chemin>" dans le décorateur d'itinéraire, le chemin demandé sera stocké sous forme de chaîne de caractères dans le chemin de variable. Le chemin qui suit est un nom de variable, vous pouvez donc entrer le nom de votre choix (comme \ <chemin: mypath>).
Puisque le premier élément du tableau avec ceci comme divisé par "/" est le nom du contrôleur, utilisez import_module de importlib pour spécifier le chemin vers le contrôleur sous forme de chaîne et obtenir le contrôleur.
Enfin, utilisez getattr pour obtenir la méthode réelle à partir de la chaîne de nom de méthode et la renvoyer.
Vous pouvez maintenant spécifier implicitement le contrôleur sans le spécifier explicitement! Tu l'as fait! !!
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
...
C'est contraire à la philosophie de Python \ (^ o ^) /
Recommended Posts