jim collins
jim collins

Reputation: 417

Flask - avoiding having code in controller

I'm learning Flask and all the router examples I see look like this:

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

I don't want any code in my controller except:

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

I like my code to be reusable and testable and if it's in the Flask controller it's neither. Can someone point me to examples of using Flask with the business logic/code separate from the controller?

Upvotes: 0

Views: 84

Answers (1)

Abhishek Prashant
Abhishek Prashant

Reputation: 375

You can try defining a function which returns a similar output given a request parameter like so:

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

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

or based on the code you provided, you can create a class which contains reusable code snippets as static functions

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

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

Upvotes: 1

Related Questions