Notes tagged with "Flask"

Notes on Flask

Notes from Armin Ronacher’s Flask for Fun and Profit

create_app
from flask import Flask

def create_app(config=None):
    app = Flask(__name__)
    app.config.update(config or {})
    register_blueprints(app)
    register_other_things(app)
    return app
register_blueprints
from werkzeug.utils import find_modules, import_string

def register_blueprints(app):
    for name in find_modules('myapp.blueprints'):
        mod = import_string(name)
        if hasattr(mod, 'blueprint'):
            app.register_blueprint(mod.blueprint)
Optional Contained App

The idea here is you can separate top level config and functionality that is clearly separated from internal flask related config and functionality. I.e. in the flask app this object is exposed as an attribute on the app, and visa versa.

Web Application Setup - Flask Setup

FLASK SITE SETUP

  1. Create virutualenv for you application:

    ... cd /var/www/appname
    ... python3 -m virtualenv --python=python3 venv
    
  2. Copy the basic application files to your new app directory:

    From your development machine:

    • scp manage.py wsgi.py adminusr@server:/var/www/appname

    • scp django.settings.ini adminusr@server:/var/www/appname/config

    • scp requirements.txt adminusr@server:/var/www/appname/packages

    • scp appsite-0.1.0.tar.gz adminusr@server:/var/www/appname/packages

    • scp app-plugin-0.1.0.tar.gz adminusr@server:/var/www/appname/packages

    Your directory structure should now look like:

    appname
    ├── config
    │   ├── django.settings.ini
    ├── data
    ├── logs
    ├── manage.py
    ├── packages
    │   ├── appsite-0.1.0.tar.gz
    │   ├── app-plugin-0.1.0.tar.gz
    │   ├── requirements.txt
    ├── static
    └── wsgi.py
    

    We’ll describe these files in more detail later.