如何在项目之间重用Bottle路由器代码?

时间:2019-06-23 14:32:41

标签: python bottle

通常,我通过将代码封装到类中来重用Python。

但是用Bottle来说,我基本上是在全局级别上用路由来装饰函数。

例如。

@get("/foo/<id>")
def foo(id) :
   return f(id)

我现在有两个项目,它们可能共享80%这样的路由处理程序。

如何最好地使它们之间的共性可重用?

由于显式的自我,我认为我无法修饰类的方法。那么除了复制和粘贴之外,还有另一种方法可以在两个不同的项目之间共享代码吗?

2 个答案:

答案 0 :(得分:1)

如果您希望重用实现(示例中的函数foo),那么类似的方法可能对您有用:

from bottle import Bottle
from path.to.my.common.lib import foo

app = Bottle()

app.get("/foo/<id>")(foo)

app.run(host="0.0.0.0", port=8000)

我在那里所做的只是显式地使用装饰器,而不是使用其漂亮的@语法。

答案 1 :(得分:0)

您还可以合并路线。

from myclient import clientRoute
from myapi import apiRoute
from mysandbox import sandboxRoute
app = bottle.app()
for nftyRoute in (myclient , myapi , mysandbox):
    app.merge(nftyRoute)

,并且在每个路由文件中,您都将简单地:(例如myclient.py)

from bottle import Bottle, get, post, request, response, template, redirect, abort
clientRoute = Bottle()