Basic Flask Web Server Setup In Python

July - 2021

TODO: Fix the formatting of this post that got busted during the move to nextjs





### Basic Hello, World

``python 
#!/usr/bin/env python 

from flask import Flask
    
app = Flask(__name__)
    
@app.route('/')
def index():
    return "Hello, World"

app.run(port=8000, host='0.0.0.0')
``
            
--------------------------------------------------------------------------------

TODO: Verify this works as expected 

### Using query strings

``python
from flask import Flask
from flask import request


app = Flask(__name__)

@app.route('/')
def index(name="Example"):
    name = request.args.get('name', name)
    return "Hello {}".format(name)

app.run(port=8000, host='0.0.0.0')  
``
    
---


The `from flask import request` sets up a global object that allows for grabbing query strings. 


---

Routes are setup with decorators. For example:

    @app.route('/')
    
Views can have more than one route. And they can be used to create variables. 

    @app.route('/')
    @app.route('/<name>')


---

For cleaned up URLs, this would get us:

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    @app.route('/<name>')
    def index(name="World"):
        return "Hello {}".format(name)
    
    app.run(debug=True, port=8000, host='0.0.0.0')
    

---

Multiple routes with types


    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/multiply')
    @app.route('/multiply/<int:val1>/<int:val2>')
    @app.route('/multiply/<float:val1>/<int:val2>')
    @app.route('/multiply/<float:val1>/<float:val2>')
    @app.route('/multiply/<int:val1>/<float:val2>')    
    def multiply(val1=5, val2=5):
        return str(val1 * val2)