Mention the cookiecutter template. Signed-off-by: Aurélien Bompard <aurelien@bompard.org>
55 lines
2 KiB
Text
55 lines
2 KiB
Text
== Frameworks and Tools
|
|
|
|
We attempt to use the same set of frameworks and tools across projects
|
|
to minimize the number of frameworks developers must keep in their
|
|
heads.
|
|
|
|
=== Python
|
|
|
|
==== Flask
|
|
|
|
http://flask.pocoo.org/[Flask] is a web microframework for Python based
|
|
on http://werkzeug.pocoo.org/[Werkzeug] and
|
|
http://jinja.pocoo.org/[Jinja 2]. It is our preferred framework and all
|
|
new applications should use it unless there is a very good reason not to
|
|
do so.
|
|
|
|
[NOTE]
|
|
====
|
|
For historical reasons, you may find applications that don't use Flask.
|
|
Other frameworks currently in use include
|
|
https://www.djangoproject.com/[Django] and
|
|
http://docs.pylonsproject.org/projects/pyramid/en/latest/[Pyramid].
|
|
====
|
|
|
|
Flask is designed to be extensible, so it's common to use extensions
|
|
with the core flask library. A few common extensions are documented
|
|
below.
|
|
|
|
===== Flask-SQLAlchemy
|
|
|
|
http://flask-sqlalchemy.pocoo.org/[Flask-SQLAlchemy] integrates Flask
|
|
with SQLAlchemy. It will configure a scoped session for you, set up a
|
|
declarative base class, and provide a convenient
|
|
`flask_sqlalchemy.BaseQuery` sub-class for you.
|
|
|
|
===== SQLAlchemy Helpers
|
|
|
|
https://github.com/fedora-infra/sqlalchemy-helpers/[SQLAlchemy-Helpers] is an
|
|
alternative to using Flask-SQLAlchemy if you need your models to be usable
|
|
from outside Flask.
|
|
|
|
==== SQLAlchemy
|
|
|
|
http://www.sqlalchemy.org/[SQLAlchemy] is an SQL toolkit and Object
|
|
Relational Mapper. It provides a core set of tools (surprisingly called
|
|
SQLAlchemy Core) for working with SQL databases, as well as an Object
|
|
Relational Mapper (SQLAlchemy ORM) which is built using SQLAlchemy Core.
|
|
|
|
SQLAlchemy is quite flexible and provides a myriad of options. We use
|
|
SQLAlchemy with its
|
|
http://docs.sqlalchemy.org/en/latest/orm/extensions/declarative/index.html[Declarative]
|
|
extension to map SQL tables to Python classes. Once mapped, instances of
|
|
those Python classes are created from database rows using the
|
|
http://docs.sqlalchemy.org/en/latest/orm/session.html[Session]
|
|
interfaces.
|