Setting up Python Flask app with admin section
Question: I've built a few small Flask apps before that were read only and I really
enjoyed the process. now I'm adding an admin section to a Flask app and I'm
looking for some guidance.

Current directory structure looks like this:

    
    
    ├── Makefile
    ├── Procfile
    ├── app.py
    ├── requirements.txt
    ├── static
    │   ├── css
    │   ├── fonts
    │   ├── img
    │   └── js
    └── templates
        ├── about.html
        ├── base.html
        ├── contact.html
        └── index.html
    

My app.py file looks like this:

    
    
    import os
    from flask import Flask, render_template
    
    app = Flask(__name__)
    app.debug = True
    
    
    # MAIN APPLICATION
    @app.route('/')
    @app.route('/work/<gallery>/')
    def index(gallery='home'):
        return render_template('index.html', gallery=gallery)
    
    
    @app.route('/views/<view>/')
    def view(view):
        return render_template(view + '.html')
    
    
    @app.route('/data/<gallery>/<size>/')
    def data(gallery='home', size='md'):
        data = '[\
            {"image": "/static/img/photos/md/img_1.jpg","color": "white"},\
            {"image": "/static/img/photos/md/img_2.jpg","color": "white"},\
            {"image": "/static/img/photos/md/img_3.jpg","color": "black"}\
            ]'
        return data
    
    
    if __name__ == '__main__':
        # Bind to PORT if defined, otherwise default to 5000.
        port = int(os.environ.get('PORT', 5000))
        app.run(host='0.0.0.0', port=port)
    

I've done some research and found the [Blueprints
framework](http://flask.pocoo.org/docs/blueprints/) and [Flask-
Admin](https://github.com/mrjoes/flask-admin) which seem like they might work
together. Does anyone have an alternate suggestion that might be more
efficient or easier to set up?


Answer: Blueprints allow you to group functionality into isolated modules.

If you feel your service will be very small, there's no need to use blueprints
- you can add routes to the Flask application, like you do in your example.

However, if application will get bigger, it is better to split it into smaller
pieces by using blueprints. In your example, "work" is first possible
blueprint, "views" is another, etc.

Flask-Admin allows you to build administrative interface a-la Django admin. It
does not matter how you're structuring rest of your application - you add
Flask-Admin and it just works.

