diff --git a/Large-app-how-to.md b/Large-app-how-to.md new file mode 100644 index 0000000..89e43bf --- /dev/null +++ b/Large-app-how-to.md @@ -0,0 +1,61 @@ +This document is an attempt to describe the first step of a large project structure with flask and some basic modules: +* SQLAlchemy +* WTF (What The Form) + +Please feel free to fix and add you own tips. + +# Installation +## Flask +[http://flask.pocoo.org/docs/installation/](Flask Installation) +I recommend using virtual env: easy and allow multiple environment on the same machine and doesn't even require you to have super user right on the machine (as the libs are localy installed). + + + +## Flask-SQLAlchemy +SQL provide an easy and advanced way to serialize your object to different type of relational database. In your virutal env, install SQLAlchemy from pip: + + pip install flask-sqlalchemy + +## Flask-WTF +WTF (What the Form) Provides a easy way to handle user's data submission. + + pip install Flask-WTF + +# Overview +Ok, so from now, we should have all the libs ready. Here the folder structures: + + config.py + run.py + shell.py + app.db + app/__init__.py + app/constants.py + +For every module (or sub app... ) well have this file structure (here for the users module) + + app/users/__init__.py + app/users/views.py + app/users/forms.py + app/users/constants.py + app/users/models.py + app/users/decorators.py + +We'll create 4 modules, a user module (manage user's registration, login, password lost, profile edit and maybe Third party Login/Registration) an email sub module intended to be used by a queuing server, and a post and comments modules + +## Config +`run.py` will be used to launch the web server. + + from tol import app + app.run(debug=True) + +`shell.py` will allow you to get a console and enter commands within your flask environment. Maybe not as nice as debugging with pdb, but always usefull (when you will initialize your database) + + #!/usr/bin/env python + import os + import readline + from pprint import pprint + + from flask import * + from app import * + + os.environ['PYTHONINSPECT'] = 'True' \ No newline at end of file