使用Flask,webapp2和Pyramid等Python Web应用程序框架,每个路由处理函数如何拥有自己的py文件?我不希望所有这些功能在一个文件结构中堆叠在一起。我该怎么做才能在Flask,webapp2和Pyramid中使用它?
谢谢。
答案 0 :(得分:2)
在烧瓶和金字塔中(不知道webapp2,但可能相同),route-handling-function(让我们称之为视图)只是函数,它们注册到app注册表。
在烧瓶中,您可以将视图放在任何位置,只要您注册它:
app.py:
from flask import Flask
app = Flask(__name__)
view.py:
from app import app
@app.route("/")
def hello():
return "Hello World!"
main.py:
from app import app
if __name__ == "__main__":
app.run()
金字塔也是如此。我不会详细介绍。注册过程不同,但想法是一样的。但只要你注册它,它就在任何地方。注册视图有两种方法:
add_view
:第一个参数是函数的虚线路径。把它放在任何地方,并把正确的路径放在这里。scan
:第一个参数是扫描以查找视图的包。只需确保所有视图都在包及其子包中,一切都会正常工作。答案 1 :(得分:1)
如果Python期望在特定位置使用函数,那么您可以自己从其他文件中导入它们。
例如,如果Web框架从code.py
导入函数:
def a():
pass
def b():
pass
def c():
pass
然后您可以通过从其他地方导入函数来替换code.py
:
from mycode.somewhere import a, b
from mycode.some.other.place import c
就Web框架而言,您的code.py
仍包含函数a
,b
和c
,但您的代码当然可以采用不同的方式进行组织