Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > Python > Django de zéro : vos projets Python sur le Web ! > Débutons avec Django > Notre première application pas à pas... > Lecture du tutoriel

Notre première application pas à pas...

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : .skaz
Visualisations : 1 929

Plus d'informations Plus d'informations
Nous allons dans ce chapitre aborder la rédaction complète de notre modèle pour aboutir à une application utilisable. Nous partirons d'un exemple, que nous détaillerons, puis nous nous dirigerons vers le comment mettre en place un projet et une application, comment installer par exemple. Nous aborderons également le cas de MySQL pour les données, voir ce qui est fait à partir du modèle créé. Pour finir, nous découvrirons l'interface d'administration générée par Django automatiquement à partir de notre modèle. Hé oui, Django a le pouvoir de générer automatiquement une interface d'administration ! :)

Bonne lecture et bonne découverte...
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Rédaction de notre modèle

Nous allons partir du code ci-dessous et le détailler de façon à ce que vous compreniez facilement. Le fichier à ouvrir est models.py, je reprendrai le fichier de monprojet/monapplication.

Code : Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from django.db import models

class Categorie(models.Model):
    nom = models.CharField(max_length=100)
    description = models.TextField()

    def __unicode__(self):
        return self.nom

    class Admin:
        pass

class Page(models.Model):
    titre = models.CharField(max_length=100)
    contenu = models.TextField()
    categorie = models.ForeignKey(Categorie)

    class Admin:
        pass

Voilà le code que je viens de créer et qui est celui de notre modèle. On retrouve des choses connues et déjà vues, notamment le module importé et la déclaration des classes correspondant à nos deux modules, un module de gestion des pages et l'autre des catégories. Découvrons le reste à présent.

Explications des différents champs



Code : Python
1
2
nom = models.CharField(max_length=100)
description = models.TextField()

Code : Python
1
2
3
titre = models.CharField(max_length=100)
contenu = models.TextField()
categorie = models.ForeignKey(Categorie)

On appelle champ ce que sont les variables nom, description, titre, contenu et catégorie. Cela va correspondre à un champ dans votre SGBD. Par exemple, le champ nom sera un champ de type varchar, une simple ligne de texte. Le champ description lui sera de type text, un grand champ texte où l'on peut rédiger sur plusieurs lignes. On trouve comme ça une vingtaine de types de champ différents. Nous les découvrirons tous en détail dans le prochain chapitre. Voilà un schéma pour reprendre ce que je viens de dire :

Image utilisateur

Comme vous l'avez sans doute remarqué, il y a un attribut max_length=100 dans les champs de type CharField. C'est parce que ce type de champ requiert un attribut obligatoire qu'est celui-là. max_length=100 permet de définir le nombre maximum de caractères possibles.

Le champ de type ForeignKey, explications



Un type de champ que je n'ai pas encore évoqué c'est ForeignKey qui permet de lier deux modules Django. Ici, le module Categorie est lié au module Page. Dans l'administration que Django nous génèrera, nous aurons dans notre page pour l'ajout de pages un menu déroulant avec à l'intérieur les différentes catégories possibles. Si vous voulez, ça permet de faire une jointure comme en PHP, si vous connaissez. Je parlais bien entendu de cette ligne categorie = models.ForeignKey(Categorie) . ;)

C'est bien beau de lier des modules, mais Django n'est pas devin (pas encore du moins) et en conséquent, dans notre menu déroulant pour sélectionner la catégorie, qu'est-ce qui sera affiché ? Il faut le définir dans notre classe Categorie. C'est ce que fait le bout de code suivant :

Code : Python
1
2
def __unicode__(self):
    return self.nom

Ça va dire à Django que nom est le champ à prendre par défaut, même si je n'aime pas trop ce terme. C'est le nom des catégories qui sera affiché dans le menu déroulant.

Mettons en place la génération automatique de l'administration



Dans le code encore non étudié, il reste celui présenté ci-dessous. Il va permettre à Django de savoir que nous voulons qu'il génère automatiquement une administration pour les modules de notre application.

Code : Python
1
2
class Admin:
    pass

Je n'ai rien à ajouter là-dessus, je vous dis juste que nous reviendrons sur cette administration générée automatiquement dans quelques chapitres, nous verrons que mettre à la place du pass .

Mettons en place notre projet et son application

Nous avons un présent notre projet de commencé et une application de terminée. Il serait sympa d'installer d'ores et déjà le projet et notre application pour pouvoir tester au fur et à mesure du codage.

Nous allons dans un premier temps construire notre base de données à partir du modèle créé plus haut. Pour ça, il va falloir remplir le fichier setings.py si ce n'est déjà fait. De même, il va falloir ajouter l'application précédemment créée à la liste des applications dans le fichier settings.py. Je vous laisse faire, ça a déjà été vu, il ne devrait pas y avoir de problème.

Votre base de données doit être créée par vos soins, Django ne la créera pas, je vous conseille donc d'aller en créer une, soit à partir de PHPMyAdmin ou de la console MySQL interactive. Après, ça dépend du SGBD utilisé.

Lancer la création des tables et configurer un projet



Bien, tout est prêt : la base de données est créée, notre modèle ne comporte pas d'erreur, etc. On peut donc lancer la création des tables dans notre base de données. Django a une commande permettant de le faire :

Code : Console
python manage.py syncdb

Ce qui va se passer est simple : Django va aller exécuter le code SQL vu plus haut. Après exécution de cette commande dans la console, vous devriez avoir une réponse de Django :

Citation : Réponse de Django
Creating table auth_message
Creating table auth_group
Creating table auth_user
Creating table auth_permission
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table monapplication_categorie
Creating table monapplication_page

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no):

Django vous pose des questions ! Il vous demande si oui ou non vous voulez créer un super utilisateur. Je vous conseille de le faire, il suffit de répondre yes. Vous allez après devoir renseigner un nom d'utilisateur, son adresse email et un mot de passe. Si tout s'est bien déroulé, Django vous répondra encore :

Citation : Réponse de Django
Superuser created successfully.
Installing index for auth.Message model
Installing index for auth.Permission model
Installing index for monapplication.Page model
Loading 'initial_data' fixtures...
No fixtures found.

Serveur de développement Django



Django embarque avec lui un serveur de développement pour développer et pouvoir déboguer rapidement. Il vous permet à vous de tester votre projet au fur et à mesure de sa conception. Le serveur de développement se lance de la façon suivante :

Code : Console
python manage.py runserver

Cette commande lancera le serveur de développement de Django. Il est par défaut lancé sur le port 8000 mais vous pouvez très bien spécifier le port, en le mettant de la façon suivante dans votre commande : runserver 8888.

Vous pouvez à présent accéder à votre projet depuis l'adresse suivante : http://127.0.0.1:8000. Adaptez bien entendu le port à celui que vous avez mis si vous en avez mis un. Vous tombez normalement sur une jolie page avec du bleu, du blanc et du gris.

Vous avez votre projet devant les yeux, le serveur de développement recense toutes les actions effectuées comme vous pouvez le voir. À son lancement et pendant son exécution, il vérifiera vos modèles voir s'il n'y a pas d'erreur et vous fera un diagnostic comme vu avec la commande python manage.py validate monapplication.

Dire à Django que notre projet utilise la génération automatique de l'administration



Nous avions configuré les modules des applications pour savoir si oui ou non on les intégrait dans l'administration automatiquement créée, maintenant, il va falloir le dire à notre projet et définir une adresse pour notre administration. Pour dire dans un premier temps que notre projet utilise l'administration générée automatiquement, il faut ouvrir le fichier settings.py et ajouter la ligne suivante comme ci-suit :

Code : Python
1
2
3
4
5
6
7
8
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'monprojet.monapplication',
)

Maintenant que c'est fait, on va aller définir l'adresse de notre administration, car c'est bien beau d'avoir une administration, mais encore faut-il qu'elle soit accessible ! Pour se faire, ouvrez le fichier urls.py à la racine de votre projet. Il ressemble à ça :

Code : Python
1
2
3
4
5
6
7
8
9
from django.conf.urls.defaults import *

urlpatterns = patterns('',
    # Example:
    # (r'^monprojet/', include('monprojet.foo.urls')),

    # Uncomment this for admin:
#     (r'^admin/', include('django.contrib.admin.urls')),
)

Pour activer l'administration, décommentez la ligne # (r'^admin/', include('django.contrib.admin.urls')), . Par défaut, l'administration sera disponible à l'adresse http://127.0.0.1:8000/admin/. Vous pouvez modifier cela en changeant le admin en ce que vous voulez. Nous aurons l'occasion de revenir sur ce fichier plus tard dans le chapitre, ne vous inquiétez pas si vous n'avez pas tout bien compris. ;)

Comme vous l'avez sans doute remarqué, ça ne marche toujours pas, c'est parce qu'il faut relancer la commande python manage.py syncdb qui n'exécute le code SQL pour les nouvelles applications seulement qui n'existent pas encore dans la base de données. Elle n'affectera donc en rien les données déjà présentes. Vous pouvez donc l'utiliser sans crainte autant de fois que vous voulez.

Voilà, vous pouvez accéder à l'administration générée automatiquement à partir des modèles de vos différentes applications. Cette administration est le sujet de la prochaine partie du chapitre.

Découverte de l'administration générée par Django

Notre administration étant générée à présent, nous allons la découvrir dans cette partie. Rendez-vous donc sur votre administration, à partir de l'adresse suivante : http://127.0.0.1:8000/admin/. Encore une fois, si vous avez adapté, modifiez en conséquent.

Boîte de connexion à l'administration



Bon, nous sommes sur notre page d'administration et se présente devant nous un espace pour se connecter. Vous vous souvenez de l'utilisateur que vous avez enregistré à la création des tables ? Ce sont ces identifiants qu'il va falloir utiliser pour se connecter. Voilà une capture d'écran de ce que vous devez avoir :

Image utilisateur

Page d'accueil de notre administration



Une fois connecté, vous arrivez sur la page d'accueil de l'administration générée par Django. Rien de bien compliqué, elle est assez simple. On notera l'ergonomie de l'espace d'administration ! Nous verrons également plus tard que l'on peut modifier et adapter selon nos besoins cette page d'accueil.

Image utilisateur

Pour finir sur l'espace d'administration



Je n'irai pas plus loin dans l'espace d'administration, vous êtes assez grand pour découvrir tout seul, de plus que cette dernière est en français. Je marquerai juste votre attention sur le fait que Django dispose d'une gestion des utilisateurs et des groupes. Django génère automatiquement les différents droits, comme vous pourrez le voir dans la gestion des groupes. Vous remarquerez également la présence d'une application Sites, qui permet de gérer plusieurs sites, vous pouvez l'enlever en supprimant la ligne suivante du fichier settings.py : 'django.contrib.sites' .

Image utilisateur Image utilisateur Image utilisateur

Un gros chapitre de terminé ! Gros dans le sens que c'est ici que vous avez appris les bases. Tout y est important, et n'hésitez pas à relire si vous n'avez pas compris certaines choses, car c'est vraiment la base de la base et pour continuer, il vous faut ces bases.

J'espère que vous commencez à prendre conscience des possibilités offertes par Django, notamment avec la génération automatique de l'administration, qui est un gain de temps phénoménal quand on développe un projet. :)

Le serveur de développement est comme son nom l'indique un serveur de développement, il est fortement déconseillé de l'utiliser comme serveur pour son site par exemple.
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 28/11/2007 à 16:34:52
Modifié : le 22/08/2008 à 15:56:13
Avancement : 100%
Licence : Copie non autorisée

0 commentaire

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 80 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1005s (0.0899s)