mars 2nd 2008 11:30

Premiers pas avec Django : un framework en Python pour développer rapidement et efficacement - Acte 1

test-ok.pngComme vous le savez sûrement Wordpress c’est sympa, c’est convivial, relativement modulaire, agréable pour le gestionnaire de contenus, ça fait de belles urls bien proprettes … oui mais voilà un geek sur wordpresss, au bout d’un an, il s’emmerde … il a en a surtout raz la casquette de devoir mettre à jour 20 pluggin tous les mois. Du coup il se demande s’il ne va pas en virer ou faire un métabundle …; mais non c’est idiot, trop de temps pour un résultat sûrement pas sexy qui posera par la suite des problèmes de maintenabilité.

Ma problématique du jour est la suivante : j’ai besoin d’un truc assez passa partout qui me permettrait de faire fonctionner plusieurs petites appli très simples, blog, moteur digg like… sur des urls en sous domaine, rien de sorcier. mais là tout de suite, on voit bien que

Worpdpress + pligg face à Django tout seul qui sait tout faire, … on prend donc Django. Ruby on Rails aurait lui aussi pu convenir, mais c’est Python qui nous intéresse ;)

Ce qui m’amène au jouet du jour : Django

Django est un framework reposant sur le langage objet Python, Django est un outil à destination des développeurs.

On va commencer par faire nos premiers pas avec lui

Petite install de Django, on va utiliser la méthode svn plus à même de garantir une maintenabilité parfaite.

$ svn co http://code.djangoproject.com/svn/django/trunk/ django

En fonction des OS, des versions des OS, il va falloir localiser votre installation, sur Linux, python est souvent dans le /usr/lib; mais si ce n’est pas là pas de panique

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

ce qui me renvoi pour mon os :

/usr/lib/python2.5/site-packages

C’est parfait je sais où se trouve mon install de Django

$ cd /usr/lib/python2.5/site-packages && ls
Django-0.97_pre-py2.5.egg-info README django

Comme je veux avoir vite un truc en production, je suis les bons conseils distillés sur le site de Django et j’installe le mod-python,

$ sudo apt-get install libapache2-mod-python

Il faut maintenant s’assurer que les pages .py s’affichent correctement et pour ça il va déjà falloir modifier le fichier de copnf default de notre apache2

$ cd /etc/apache2/sites-available/
$ emacs default

A la 10e ligne on trouve ceci :

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
allow from all
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</Directory>

On va le transformer en ça :

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
allow from all
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</Directory>

c’était histoire de déclarer ici que notre Apache est beau, que notre Apache, est puissant que notre Apache comprend maintenant Python ! … d’ailleurs pour s’en rendre compte on va tester ça en créant un petit fichier de test, intelligemment appelé test.py

$ sudo emacs /var/www/test.py

on y colle ceci :

def index(req):
return "Yeaaah my Apache knwows kungfu !!!";

on enregistre maintenant le tout, puis on redémarre apache

$ sudo /etc/init.d/apache2 restart

J’ouvre mon navigateur et et là top du top, mon Apache connait le kungfu …

test-ok1.png

On passe maintenant à la config de base du httpd.conf

$ sudo emacs httpd.conf

on va y placer ceci

<Location "/monsite/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE monsite.settings
PythonDebug On
</Location>

Notez que le debug est sur “on” pour le moment.

On va maintenant s’installer notre petite base de données, on va ici choisir du MySQL5 qui aura aussi besoin de mysqldb

$ sudo apt-get install mysql-server python-mysqldb

C’est donc parti pour l’installation de notre Django , je me place dans le répertoire du trunk Django que j’ai svn checout à la première étape et je lance le script d’install :

$ sudo python setup.py install

Si tout c’est bien passé je dois avoir quelque choses comme ceci qui m’indique où l’egg se trouve

running install_egg_info
Writing /usr/lib/python2.5/site-packages/Django-0.97_pre.egg-info

Il ne reste plus maintenant que les confs post installation à se farcir, elles sont très bien documentées sur le site de support :

[Ask] [blinklist] [Bloglines] [BlogMarks] [Blogsvine] [del.icio.us] [Digg] [diigo] [dzone] [Facebook] [Faves] [Hugg] [Ma.gnolia] [MySpace] [MyWeb] [Netvouz] [Newsvine] [OnlyWire] [Segnalo] [Simpy] [Slashdot] [StumbleUpon] [Technorati] [Yahoo!]

4 Comments »

4 Responses to “Premiers pas avec Django : un framework en Python pour développer rapidement et efficacement - Acte 1”

  1. admin on 04 mar 2008 at 0:28 #

    Et voilà, j’ai fais la connerie de tâter un peu turbogears … et merde, c’est vachement bien aussi ce bidule … et me voilà revenu à mon point de départ … je vais me laisser jusqu’à jeudi pour tâter un peu aussi Pylon avant de m’arrêter sur un framework… en fait je sais plus trop où donner de la tête tant je vois des projets matures et attractifs en framework python. En tout cas il y aura une suite à ce post c’est clair, sans rentrer dans le méga comparatif de framework python, j’aimerai être assuré d’avoir compris la philosophie et les limittes de django, turbogears et Pylon. Mes priorités sont les perfomances, la souplesse et surtout coder le moins possible vu que je suis une vraie quiche, donc si vous avez des conseils :p

  2. Nautile bleu on 04 mar 2008 at 14:11 #

    Un comparatif entre turbogears et django
    http://www.biologeek.com/journal/index.php/comparaison-de-turbogears-et-django-deux-frameworks-web-python

    David Larlet est un fan de django (il a fait la traduction de la doc en Fr) mais je trouve que c’est assez objectif.

    Nautile

  3. admin on 04 mar 2008 at 14:52 #

    Yeah super, merci pour ce lien, j’avoues que je n’ai pas encore eu le temps de faire de recherches approfondies pour comparer tout ça mais après une première lecture, mon choix s’orienterait pour le moment vers Django à cause de mon niveau déplorable qui m’inciterait à tendre vers les plus user friendly

    Il me manque à tester Pylons, puis retester Django, puis retester TurboGears … essayer de faire deux trois choses simples avec…
    En tout cas Nautile merci beaucoup pour ce link. J’ai vraiment envie de découvrir d’autres choses que Zope mais toujours en python. Je vais aussi zieuter un peu Cherrypy du coup … je suis pas arrivé !

  4. Nautile bleu on 04 mar 2008 at 17:53 #

    Pas de pb. Comme dans l’article, je pense que le choix doit se faire en fonction du type de projet qu’on a en tête. Sachant tout de même que django sera sans doute plus souple si on a des besoins qui ne cadrent pas avec le framework, car tout, ou presque est découplable dans django. Alors que je ne suis pas sûr que ce soit autant le cas avec TG.

    Dans la série à tester, il y a aussi webpy !! ;)

    Je pense que je resterais à django en ce qui me concerne. En fait pour l’instant, j’utilise symfony, qui est un peu le RoR de PHP, mais je trouve de plus en plus PHP vraiment pénible. Je me tâte pour migrer vers RoR ou Python. Pour l’instant, je trouve django plus impressionant que RoR, mais Ruby plus agréable que Python (mais dans tous les cas, c’est mieux que PHP) !!

Trackback URI | Comments RSS

Leave a Reply

« ZiPhone en pratique : désimlocking et jailbreak en quelques clics | Paradise Paintball : Alors ça frag ? »