Tutos Django

Bien débuter avec Django

Nous utiliserons tout au long de ce blog la dernière version en cours stable de Django (à l'heure où je vous parle : 1.3.1).

La documentation actuelle de Django explique très bien comment l'installer et propose un tutorial de découverte en 4 étapes :

Documentation officielle <- alors OK c'est en anglais, mais la documentation est très très bien faite et permet d'apprendre correctement les bases de Django.
Une documentation en Français existe aussi mais elle couvre Django 1.1.1 et de légères différences sont présentes par rapport à la dernière version en cours. Étant donné que le site Django-fr s'occupe de traduire la documentation officielle de Django, je ne traduirai pas moi-même ce qui est définit dans la documentation de la version 1.3.1.

Le pouvoir de Django, actuellement le framework web le plus populaire pour python, vient en partie du fait qu'il dispose d'un ORM intégré et d'une interface d'administration automatiquement générée simple à mettre en place et à utiliser.

Lorsque vous rencontrez une erreur qui n'est pas expliqué dans la documentation officielle, si une recherche google de l'erreur ne vous a pas permis de comprendre votre problème, intéressez-vous au site stackoverflow qui est une excellente mine d'informations pour les développeurs.

Après cette petite présentation, passons à la pratique et réalisons notre premier projet Django qui va afficher une page "Hello World !"

Nous utiliserons ici un environnement de type linux, dans mon cas Ubuntu.

C'est parti ! Tout d'abord on récupère et installe django si ce n'est pas déjà fait (assurez-vous d'avoir les droits sudo) :

$ apt-get install python-setuptools
$ easy_install django

Créons à présent notre projet Django :

$ django-admin.py startproject mysite

Un projet peut contenir plusieurs applications qui peuvent être réutilisables ensuite dans d'autres projets Django. Ce qui permet d'avoir une grande portabilité du code et d'utiliser des applications déjà créées par d'autres personnes afin d'avancer plus vite.
C'est le cas par exemple de ce site qui utilise la base de l'application django-blog-zinnia pour fonctionner.
Créons notre application :

$ cd mysite
$ python manage.py startapp helloworld

Maintenant que notre application est créée, il va falloir que nous l'ajoutions à notre projet, pour cela, nous allons simplement éditer le fichier settings.py, en ajoutant à la variable INSTALLED_APPS, le nom de notre application :

INSTALLED_APPS = (
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.sites',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  # Uncomment the next line to enable the admin:
  # 'django.contrib.admin',
  # Uncomment the next line to enable admin documentation:
  # 'django.contrib.admindocs',
  'helloworld',
)

Au passage, nous pourrions décommenter 'django.contrib.admin' afin d'autogénérer l'interface d'administration de notre site, mais pour l'instant nous ne l'utiliserons pas.
Nous pouvons également modifier d'autres variables dans ce fichier à savoir l'utilisation de la base de données avec ce projet.
Bien que nous n'utiliserons pas de base de données, ni de modèles pour ce tutorial, nous allons quand même définir une base de données de développement de type sqlite3. Pour cela rien de plus facile, on modifie ces lignes :

DATABASES = {
   'default': {
          'ENGINE': 'django.db.backends.sqlite3',
          'NAME': '/home/guillaume/ma_bdd_de_dev', 
          'USER': '',
          'PASSWORD': '',
          'HOST': '',
          'PORT': '',
   }
}

Ici je déclare 'NAME': '/home/guillaume/ma_bdd_de_dev' comme chemin vers mon fichier de base de données. Vous n'avez pas besoin de créer ce fichier, il se créera automatiquement.

Nous allons maintenant synchroniser notre projet avec notre base de données et lancer notre serveur !
Exécutez cette commande et répondez aux questions posées :

$ python manage.py syncdb

Une fois toutes les questions répondues, lancez votre serveur :

$ python manage.py runserver
Validating models...

0 errors found
Django version 1.3.1, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Voila, vous pouvez maintenant accéder à l'url http://127.0.0.1:8000/ depuis votre navigateur préféré et devriez voir ceci :

Server Works

Vous pouvez à présent remarquer que nous avons pris de l'avance sur cette page en créant notre fichier de base de données et en créant notre application.
Maintenant nous allons développer notre application !

Nous allons commencer par arrêter notre serveur en effectuant la commande Ctrl+C, puis nous allons créer un dossier nommé 'templates' dans notre application et y ajouter une page html.

$ cd helloworld
$ mkdir templates
$ cd templates
$ touch index.html

Notre fichier index.html va contenir ce code :

<html>
   <head>
     <title> HelloWorld ! </title>
   </head>
   <body>
     <p>Hello World !</p>
   </body>
</html>

Maintenant, renseignons ce fichier index.html dans notre projet, pour cela nous allons modifier le fichier urls.py présents deux dossiers plus haut :

urlpatterns = patterns('',
                       url(r'^$', 'mysite.helloworld.views.home', name='home'),
)

Notre fichier settings.py doit savoir ou trouver notre dossier de templates que nous avons précédemment créé, nous allons donc modifier la variable TEMPLATE_DIRS vers le chemin de notre dossier templates, dans mon cas:

TEMPLATE_DIRS = (
                '/home/guillaume/mysite/helloworld/templates',
)

Enfin, comme Django fonctionne sous le principe d'un modèle MVC (Modèle/Vue/Contrôleur), nous n'avons plus qu'à créer notre contrôleur que nous avons nommé "home" dans notre fichier urls.py plus haut et qui doit se trouver dans le fichier views.py, comme nous l'avons précédemment écrit : url(r'^$', 'mysite.helloworld.views.home', name='home')

On ouvre donc ce fichier et on l'édite de cette façon :

from django.shortcuts import render_to_response

def home(request):
    return render_to_response('index.html')

Ici on importe le module render_to_reponse qui permet de rediriger vers la vue souhaitée, et on définit notre méthode 'home'.
On peut à présent relancer notre serveur et observer notre nouveau rendu :)

HelloWorld

Et voila ! Mission accomplie !
Vous venez de découvrir très rapidement comment fonctionne Django et son modèle MVC, et afficher votre première page html.
Notez que nous n'étions pas oblige de créer une page html pour ce type d'exemple mais nous aurions pu directement écrire dans notre vue :

from django.http import HttpResponse

def home(request):
     return HttpResponse("HelloWorld")

Essayez !
Ici nous n'avons pas encore abordé la création de modèles, ni la manipulation de donnée au niveau du contrôleur pour l'afficher dans une vue.
Cela sera vu dans un autre tutorial plus complet ;) en attendant, n'hésitez pas à parcourir le tutorial en 4 étapes de la documentation Django, qui vous permettra d'en découvrir bien plus !

Article suivant

Article précédent

Articles similaires

Commentaires

Les commentaires sont fermés.

Pingbacks

Les pingbacks sont fermés.