Django : Architecture d'un projet, Backend (admin)
Sommaire
INTRODUCTION
- Objectifs
- connaître l'architecture d'un projet : principaux fichiers
gérer data dans backend
- Documentation
- doc : bonne version de django
officielle : https://docs.djangoproject.com/en/1.3/
français : http://docs.django-fr.org/
- tutoriel
Part 1 : créer un projet, créer une app, jouer avec ORM (API) couvert ici
Part 2 : backend (admin) couvert ici
Part 3 : frontend pas couvert ici, (voir atelier Frontend)
Part 4 : forms et vues génériques pas couvert ici
- doc : bonne version de django
- Environnement technique
Python >= 2.5
- Django 1.4
- South 0.7.4 (optionnel)
PARTIE 1 : DÉVELOPPEMENT WEB AVEC DJANGO : ARCHITECTURE D'UN PROJET
Développement web
- schéma : le développement web
- rôle d'un framework web : aider à construire réponse à une requête
- développement (DEV)
- déploiement (PROD, TEST)
Django
Pourquoi django vs autre framework
- all-in-one
admin : meilleur vendeur
- docs
- communauté : utilisation répandue
Principaux fichiers
- models.py
- admin.py
- urls.py
- views.py
- templates (HTML)
Projet : définition du besoin
La Direction de l'AUF souhaite pouvoir créer un répertoire des établissements du BMO.
(Ce n'est pas encore vrai pour le BMO mais des projets ananologues sont en cours dans d'autres régions : BECO, BAO, BAP...).
On veut gérer :
- quels professeurs sont dans quels établissements
- quelles formations donnent nos établissements membres
- quels laboratoires de recherche sont dans nos établissements membres
Projet : modélisation
- Personne
- Etablissement
- Formation
- Laboratoire
PARTIE 2 : HANDS-ON : PROJET ET APPLICATIONS
Création du projet
Le projet se nomme "Répertoire du BMO".
django-admin.py startproject bmo_repertoire cd bmo_repertoire
- survol des fichiers générés
python manage.py runserver
- settings.py
DATABASES
Création d'une application
python manage.py startapp personnes
- survol fichiers
- personnes/models.py
- documentation :
- yeah! on code!
- Personne.nom
- Etablissement.nom
class Etablissement(models.Model): nom = models.CharField(max_length=255) class Personne(models.Model): nom = models.CharField(max_length=255)
- settings.py
INSTALLED_APP
- 'personnes'
- création des tables dans DB correspondant à nos modèles
python manage.py syncdb
Backend : gérer les données dans l'admin
- urls.py
activer admin : décommenter
- import
- autodiscover
- url : admin/
- settings.py
INSTALLED_APP
- 'django.contrib.admin'
- personnes/admin.py
enregistrer modèles voir tutoriel Part 2
from django.contrib import admin from personnes.models import * admin.site.register(Etablissement) admin.site.register(Personne)
- personnes/models.py
ajouter des attributs (des champs) et des méthodes à nos modèles existants
- Personne.prenom
- Etablissement.sigle
def __unicode__(self):
- delete bmo_repertoire.db
rm bmo_repertoire.db
- (re)création de la base de DB pour avoir tables avec même structure que nos modèles modifiés
python manage.py syncdb
- personnes/models.py
ajouter une relation entre nos modèles
- Personne.universite
Fixtures
Prépopuler le projet avec des données...
South
Gestion complète des migrations de données (structure et données de la DB).
CONCLUSION : POUR CONTINUER
- Autres aspects non couverts (quelques uns)
- permissions et décorateurs
- manage.py inspectdb
- manage.py test
- forms
- generic views
- templates : tags, filtres
- Mailing list Django users :
- Channel IRC #django :
- Contribs, plugins
https://docs.djangoproject.com/en/dev/ref/contrib/
- south
- reversion
- Autre : pypi
- Enjoy!