Qu’est ce que django ?
La Plateforme de développement Web pour les perfectionnistes sous pression.
Django est un framework de construction d’applications web basé sur le langage Python. Il embarque un mapper ORM et tout un framework pour gérer la partie web, à la fois coté client et coté serveur. Il est noter que la construction d’applications avec Django est particulièrement rapide et permet un démarrage de projet sur les chapeaux de roues…
Les problématiques
Actuellement en cours de réalisation sur un projet de maintenance applicative, je me retrouve confronté à plusieurs effets un peu inattendus…
Django à beau ètre un framework populaire, les applications développées avec ce framework souffrent de la multiplicité des sources d’informations. Documentation en ligne pas toujours à jour, livres et tutoriels très didactiques mais pas toujours adaptés à une reprise, support épisodique de la communauté, je me propose de vous livrer quelques éléments de recherche qui vous aideront à prendre contact en douceur.
Versions
Comme tout framework jeune, django évolue vite, très vite, il vous faudra donc un peu d’outillage pour pallier à l’effet « mais ca marchait en 1.2 !!! »
Tout d’abord, django emploie python, il vous faudra donc rapidement faire un choix sur la version de python. 2.7 ou 3.x ? Dans la pratique des choses, le développement de la branche 2.7 est arrété, ce qui en fait la version la plus stable. Ensuite, les spécifications de cette version étant bloquées, plusieurs interpréteurs sont disponibles. Choisissez d’installer l’interpréteur de référence (cPython) disponible sur le sie de Python ou celui délivré par le gestionnaire de paquets de votre OS.
Ensuite, familiarisez vous avec la dynamique des outils associés à Python : les setuptools (PIP et easy_install) mais surtout virtualenv.
Virtualenv va vous permettre de créer un « environnemnt virtualisé », c’est à dire un répertoire qui contiendra touts les pré-requis et bibliothèques avec lesquels vous travaillerez. Cet environnement peut ensuite ètre « activé » ce qui vous permet d’installer et d’exécuter tous les outils python nécessaire à votre développement à l’intérieur de cet environnement. Désactivez le, et aucune modification n’a été faite sur votre Python « système » (c-a-d l’install de python que vous avez réalisé au nivveau de votre système d’exploitation. Ainsi :
-J’installe Python
-Je télécharge setuptools et virtualenv
-Je crée un virtualenv nommé « dj12″
-Je l’active
-J’installe django 1.2
-Je désactive
-Je crée un virtualenv nommé « djlatest »
-Je l’active
-J’installe la dernière version de django (1.7.1 à la date de rédaction)
-Je désactive
Et je peux ainsi activer au choix mon environnement en django 1.2 ou en django 1.7 pour travailler sur mes projets.
Serveurs
Il est important de noter qu’un outil de développement web devra, tôt ou tard, fournir des livrables à déployer sur un serveur web.
La problématique à laquelle j’ai été confronté est simple : comment mettre en place un environnement de test ?
J’ai tout d’abord essayé d’exécuter le serveur de développement via la méthode « runserver » de django. Même si cette approche fonctionne, il reste de grosses problématique concernant les ressources statiques. En effet, le moteur de django réserve à celles-ci un traitement particulier, ce qui pour l’instant ne me permet pas encore de tester sur un environnement « à l’identique ». Je me suis donc orienté vers un déployement sur un serveur apache « full ».
Mais… L’application que j’ai récupérée utilisait un vieux module apache (mod_python) pour exécuter l’application. Après la traditionnelle phase de backup, et plusieurs tentatives pour réitérer cette configuration sur mon serveur de test, il est vite apparu évident que la manière « moderne » de déployer faisait appel à un module plus récent, plus agile et plus sécurisé nommé WSGI. Quelques fichiers de configuration plus tard, l’applicatif tourne bien et me permet de faire tester mon client dans des conditions satisfaisantes.
Développement
S’est ensuite posée la question de l’environnement de développement. Mes ressources de formation me suggéraient d’employer pyCharm (de jetbrains) ou WingIDE, tous deux particulièrement adaptés au Python. J’ai également installé sur ma machine PTVS (Python Tools for Visual Studio) qui s’avère un peu plus difficile à configurer, mais dont le confort (pour un utilisateur régulier de Visual Studio) semble bien meilleur.
Je n’hésiterais pas à vous tenir au courant de mes avancées en la matière.
A bientôt pour un nouveau billet technologique.