Blog Arolla

Le framework Django – 1ère partie

Django c’est quoi ?

Django (nommé en référence au célèbre guitariste manouche Django Reinhardt) est un framework WEB opensource basé sur le langage Python et qui respecte le modèle MVC (MTC avec son moteur de templates pour gérer la vue).

Il a été développé initialement par deux développeurs pour un journal local du Kansas, puis publié sous licence BSD en 2005.

Depuis 2005, grâce à une forte communauté de passionnés et la Django Software Foundation (depuis 2008), le framework a rencontré un succès grandissant auprès de nombreux développeurs cherchant à réaliser rapidement des sites robustes et de qualité (son slogan : « Le framework web pour les perfectionnistes sous pression »).

Python à la base

La base de Django est le langage Python (en hommage à la troupe des « Monty Python »), dont la première version est sortie en 1991 grâce à Guido van Rossum.

Il s’agit d’un langage objet interprété, à la fois riche, puissant et assez facile à appréhender, grâce notamment à une syntaxe claire et lisible (indentation définissant la structure logique du code, modules simplifiés, etc…).

Seul, il permet de créer rapidement des scripts exécutés dans sa console, ou à l’aide de bibliothèques (très nombreuses, d’ailleurs mon Twitter est pollué par toutes les nouvelles mises à jour de ces bibliothèques !) de créer des programmes complets (interfaces graphiques, programmes, etc…) ou des sites WEB à l’aide de frameworks tels que Django ou TurboGears.

La version courante de Django (1.5) supporte les versions 2.6 et supérieures ainsi que la version 3 de Python.

J’ai envie d’essayer mais comment je l’installe ?

Afin de pouvoir utiliser ce merveilleux framework J, nous avons besoin d’installer :

-          Python (je vous avais prévenus)

-          PIL (Python Imaging Library) : librairie qui permet de gérer les images en Python

-          Un gestionnaire de base de données (MySQL, Oracle, SQLite…)

Nous allons utiliser SQLite qui est suffisant pour cet article (très rapide à mettre en place).

Debian

1. Il suffit d’installer les packages cités :

$ sudo apt-get install python python-imaging python-pysqlite2 sqlite3

2. Puis de télécharger la dernière version disponible de Django : https://www.djangoproject.com/download/

3. Ensuite décompresser l’archive téléchargée et à l’intérieur du dossier Django-1.5.X, lancez cette commande (tout est expliqué sur le site de Django) :

$ sudo python setup.py install

Windows

1. Pour commencer, il faut installer Python (EXE version 2.7.5 installé ici) : http://www.python.org/download/

2. Ensuite, modifier la variable d’environnement PATH (clic droit sur poste de travail / ordinateur -> propriétés -> paramètres systèmes avancés) afin d’ajouter à la fin de la ligne les chemins de Python et Django (attention à la version de Python) :

mes_paths_existants_deja;C:\Python27;C:\Python27\Lib\site-packages\django\bin

3. Ensuite télécharger puis décompresser l’archive de la dernière version disponible de Django : https://www.djangoproject.com/download/

4. Dans l’invite de commandes Windows (Exécuter -> cmd), placez-vous dans le répertoire de décompression de Django puis lancer la commande d’installation :

$ python setup.py install

5. Pour installer PIL, un exécutable à télécharger fera l’affaire : http://effbot.org/media/downloads/PIL-1.1.7.win32-py2.7.exe

Intégration

Django s’intègre très bien à la majorité des IDE du marché, tels qu’Eclipse, Netbeans ou PyCharm par exemple. Ces IDE facilitent l'écriture de code au niveau syntaxique. Ils offrent aussi des interfaces à partir desquelles on peut lancer les commandes propres à Django, démarrer le serveur en mode debug avec des points d’arrêt, etc…

Pourquoi utiliser Django ?

Django présente de nombreuses qualités qui rendent le développement web rapide et assez simple. Nous allons passer en revue les principales, cette liste n’étant évidemment pas exhaustive.

Authentification et gestion des utilisateurs

Le framework propose un système de gestion des utilisateurs assez complet et configurable en natif.

L’authentification de base, plus générique, se fait à partir d'un ensemble d'utilisateurs stocké en base et des mots de passe hashés selon l’algorithme de cryptage choisi lors de la configuration (MD5, SHA-1, bcrypt, etc… + sel), dans le fichier settings.py. Pour des besoins spécifiques, il est également possible d'intégrer d’autres modes d’authentification, comme par exemple les tokens OAuth (standard d’authentification par API utilisé par exemple sur Twitter, Facebook, Google…).

En outre, Django permet de gérer les permissions de chaque utilisateur, soit à travers son groupe d’appartenance, comme on le trouve dans les systèmes Unix, soit directement via ses propres droits (configurables via l’administration générée par Django).

De nombreux décorateurs permettent de tester (dans les contrôleurs et dans les vues) si l’utilisateur est authentifié et s’il a les permissions nécessaires pour accéder à une ressource.

Pour aller plus loin : https://docs.djangoproject.com/en/dev/topics/auth/

Système de templates

Diango offre un moteur de templates très puissant qui tire sa richesse des nombreux tags fournis avec le framework. Un langage d’expression est utilisé afin de gérer toute la logique d’affichage dans les pages HTML : boucles for, if / elsif / else, et d’autres filtres d’affichage récurrents qui rendent le développement plus rapide.

Il est notamment intéressant de définir un template de base (« main layout ») pour toutes les pages de l’application afin de les structurer toutes de la même manière : blocs statiques HTML (header, footer, barre de navigation…), inclusions des fichiers CSS, JS, etc…

Ensuite toutes les pages de l’application héritent de ce template et définissent uniquement le contenu de la page en elle-même (dans l’exemple ci-dessous le bloc nommé « content »)

Exemple :

{% extends "base.html" %}

{% load i18n %}

{% block title %}{% trans "User list" %}{% endblock %}

{% block content %}

<h1>{% trans "User list" %}</h1>

<ul>

{% for user in user_list %}

<li>{{ user.first_name }} {{ user.last_name }}</li>

{% endfor %}

</ul>

{% if user.is_authenticated %}

<a href="{% url 'home' %}">{% trans "Back to home" %} {{ user.username }}</a>

{% else %}

<a href="{% url 'home' %}">{% trans "Back to home" %}</a>

{% endif %}

{% endblock content %}

Pour aller plus loin : https://docs.djangoproject.com/en/dev/ref/templates/builtins/

i18n : késako ?

L’internationalisation, c'est-à-dire la version multilingue de notre application, est assez simple à mettre en place : il suffit d’utiliser des tags spécifiques du moteur de templates. En haut de chaque page HTML, on charge le module d’internationalisation appelé « i18n », puis on peut utiliser les balises « trans » pour traduire les chaînes de caractères. Le moteur se charge tout seul de chercher leur traduction dans la langue cible.

Le lancement de la commande Django « makemessages » permet de récolter dans toute l’application les chaînes de caractères utilisées. Il suffit ensuite de compléter pour chaque langue, la traduction associée à chaque chaîne puis de lancer la commande « compilemessages » et le tour est joué !

Pour aller plus loin : https://docs.djangoproject.com/en/dev/topics/i18n/

Dans cette première partie, nous avons donc découvert le framework Django qui est basé sur Python, la façon de l’installer et de l’intégrer à votre IDE favori.

Dans la 2ème partie de l’article, nous allons détailler les points forts de ce framework et ce qui le rend si intéressant à utiliser dans le développement WEB.

Plus de publications

1 comment for “Le framework Django – 1ère partie