Flask - избегать наличия кода в контроллере - PullRequest
0 голосов
/ 07 марта 2020

Я изучаю Flask, и все примеры маршрутизаторов, которые я вижу, выглядят так:

@app.route('/')
def hello():
   name = request.args.get("name", "World")
   return f'Hello, {escape(name)}!'

Я не хочу никакого кода в моем контроллере, кроме:

 @app.route('/')
 def hello():
    mycode.doHelloWorld()
    return mycode.sayHelloWorld()

Мне нравится, что мой код можно использовать повторно и тестировать, и если он находится в Flask контроллере, это не так. Может кто-нибудь указать мне примеры использования Flask с бизнес-логикой / кодом, отличным от контроллера?

1 Ответ

1 голос
/ 07 марта 2020

Вы можете попытаться определить функцию, которая возвращает аналогичный вывод, учитывая параметр request, например:

def sayHelloWorld(request):
  name = request.args.get("name", "World")
  return f"Hello, {name}!"

@app.route("/")
def hello():
  return sayHelloWorld(request)

или на основе предоставленного вами кода, вы можете создать класс, который содержит фрагменты кода многократного использования функции c

class ReusableCode:
  @staticmethod
  def sayHelloWorld(request):
    name = request.args.get("name", "World")
    return f"Hello, {name}!"

@app.route("/"):
def hello():
  return ReusableCode.sayHelloWorld(request)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...