To date, developing web applications usually involves the accomplishment of the
following two (simple) preliminary steps: (1) choosing the *programming
language* to use; (2) choosing the **web framework** to use, implemented
in that language.
In fact, **web frameworks** provides a common and solid stack of
functionalities (a.k.a. *full-stack frameworks*) out-of-the-box, aimed at
reducing boilerplate code, without "re-inventing" the wheel.
Some of these functionalities includes *automatic session handling*,
*built-in model and database management*, *authentication mechanisms*,
*template composition* and *templating language*, and so forth.
However, even if web frameworks provide the overall software platform to
integrate and orchestrate all these tools, developers are required to embrace
frameworks' design philosophy, and to adapt it to fit into their own web
applications.
**Django** is one of the most famous and widely used web framework in *Python*.
Django is built on top of solid design principles, and provides a full stack of
features aimed at drastically reducing the burden of developing *data intensive*
web applications (e.g., `django.contrib.admin`).
This talk aims at presenting an overview of the main features and capabilities
of the *Django framework*.
In particular, after a general and very short introduction to web frameworks'
features, this first part of the talk highlights some of the most important
*batteries* provided by the framework out-of-the-box.
To this end, several code examples are going to be reported in the slides
during the presentation.
Moreover, the second part of the talk focuses on presenting *best practice*
of design and developing web applications with `django`.
For example, "Which is the best way to modularize the Python code into several
and really *pluggable* `django apps`?".
To this end, a detailed description of the apps provided by the framework will
be presented, in order to understand how to use them in our code (e.g.,
`django.contrib.auth` ) in a very
[DRY](https://docs.djangoproject.com/en/1.7/misc/design-philosophies/#don-t-repeat-yourself-dry) fashion.
This talk is intended for a *Basic* level of audience. Thus, no prior knowledge
of Django is required to attend this talk. However, a *good knowledge* of
Python is required.