Как я должен повторно использовать код маршрутизатора Bottle между проектами? - PullRequest
0 голосов
/ 23 июня 2019

Обычно я повторно использую код в Python, инкапсулируя его в класс.

Но с Бутылкой я в основном пишу функции на глобальном уровне, украшенные маршрутом.

Например.

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

Теперь у меня есть два проекта, которые используют 80% своих маршрутизируемых обработчиков, как этот.

Как я могу наилучшим образом использовать общие черты между ними?

Я не думаю, что могу декорировать методы класса из-за явного "я". Так есть ли другой способ обмена кодом между двумя разными проектами, кроме копирования и вставки?

Ответы [ 2 ]

1 голос
/ 23 июня 2019

Если вы надеетесь повторно использовать свои реализации (функция 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)

Все, что я делаю там, это использование декоратораявно, а не с красивым синтаксисом @.

0 голосов
/ 24 июня 2019

Вы также можете объединить маршруты.

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()
...