Python 如何模块化URL处理功能?

Python 如何模块化URL处理功能?,python,python-2.7,flask,pyramid,webapp2,Python,Python 2.7,Flask,Pyramid,Webapp2,使用诸如Flask、webapp2和Pyramid等Python web应用程序框架,每个路由处理函数如何拥有自己的py文件?我不希望所有这些函数都堆积在一个文件结构中。我该怎么做才能在Flask、webapp2和Pyramid中工作 谢谢。如果Python希望函数位于特定位置,那么您可以自己从其他文件导入它们 例如,如果web框架从code.py导入函数: def a(): pass def b(): pass def c(): pass 然后,通过从其他地方导入

使用诸如Flask、webapp2和Pyramid等Python web应用程序框架,每个路由处理函数如何拥有自己的py文件?我不希望所有这些函数都堆积在一个文件结构中。我该怎么做才能在Flask、webapp2和Pyramid中工作


谢谢。

如果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
,但您的代码肯定可以以不同的方式组织。

如果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
,但您的代码肯定可以以不同的方式组织。

在flask和pyramid中(不知道webapp2,但可能相同),路由处理函数(让我们称它们为视图)只不过是函数,注册到应用程序注册表


在flask中,您可以将视图放在任何位置,只要您注册它:

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
    :第一个参数是扫描以查找视图的包。只要确保所有视图都在包及其子包中,一切都会正常工作
在flask和pyramid(不知道webapp2,但可能是相同的)中,路由处理函数(我们称之为视图)只不过是函数,它们注册到应用程序注册表


在flask中,您可以将视图放在任何位置,只要您注册它:

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
    :第一个参数是扫描以查找视图的包。只要确保所有视图都在包及其子包中,一切都会正常工作

嗨!非常感谢。很好的解释。从现在起,我将能够弄明白。但有一个问题,我是否可以跳过“@app.route(“/”),将其放在view.py上,而只在那里定义函数,与路由定义分开?(例如,中心路由文件,每个函数和每个文件结构分开)是的,flask有一种不使用装饰器注册路由的方法:嗨!非常感谢。很好的解释。从现在起,我将能够弄明白。但有一个问题,我是否可以跳过“@app.route(“/”),将其放在view.py上,而只在那里定义函数,与路由定义分开?(例如,中心路由文件,每个功能和每个文件结构分开)是的,flask有一种不使用装饰器注册路由的方法: