Skip to main content

文件路由

用前须知

文件路由 是作者对路由管理的探索与实践。

关于如何更好的组织项目,作者仍然在学习中。故此模块后续 可能会有变动

文件路由

文件路由,即通过对 路由文件路径、名称 等文件信息进行管理,实现对路由的有效管理。

为了更好的管理大型项目,Pywss 支持通过 app.view_modules 的方式来实现 文件路由 的管理风格。

在路由文件中,有两个内置参数

内置参数说明
__route__用于指定当前文件路由,默认为当前文件名
__view__用于指定当前文件路由视图,默认为:View对象

我们继续通过一个案例来说明:

项目结构
- view
- api/
- v1/
user.py
user_role.py
- v2/
permission.py
main.py
import pywss

def main():
app = pywss.App()
app.view_modules("view") # 指定路由模块
app.run()

if __name__ == '__main__':
main()

main.py 中,我们通过 app.view_modules("view") 指定路由模块。注意此处是模块而不是目录(使用 . 而不是 /)。

当模块只有一级的时候看不出区别,当我们指定二级模块时就可以很好的区别了,比如我们需要指定 /view/api/v1, 这时我们应该使用 app.view_modules("view.api.v1") 而不是 app.view_modules("view/api/v1")

为了避免不同路由模块之间的冲突,view_modules 仅且支持指定当前模块下的子模块。

view_modules 会遍历指定路由模块,并读取子模块下的两个特定属性 __view____route__,然后通过这两个属性来加载视图模块。

同时,为了更加灵活的实现视图机制,view_modules 支持两种机制:

类视图

类视图就是前章节中所讲到的视图机制。本节不再赘述。

函数视图

对于习惯函数式编程的同学来说,可能会更喜欢此种方式。

view_modules 同样会判断视图是否属于函数,如果是函数,则会创建路由组 party 并将 App 作为参数传递给视图函数。