Modifications entre les versions 22 et 23
Version 22 à la date du 2012-08-30 20:09:48
Taille: 8000
Éditeur: DavinBaragiotta
Commentaire:
Version 23 à la date du 2012-08-30 20:26:45
Taille: 8080
Éditeur: DavinBaragiotta
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 167: Ligne 167:
   South 0.6
    {{{
python manage.py startmigration annuaire --initial
}}}

Django : Architecture d'un projet, Backend (admin)


INTRODUCTION

  • Objectifs
    • connaître l'architecture d'un projet : principaux fichiers
    • gérer les données dans le backend (admin)

  • Documentation
    • doc : bonne version de django
    • tutoriel
      • Part 1 : créer un projet, créer une app, jouer avec ORM (API) couvert ici sauf ORM

      • 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

  • Environnement technique
    • Python >= 2.5

    • Django 1.1.1 ou 1.4
    • South 0.6 ou 0.7.4 (optionnel, recommandé)
    • Vérification des versions :
      • >>> import django
        >>> django.get_version()
        '1.4'
        >>> import south
        >>> south.__version__
        '0.7.4.'
  • Django : version recommandée à l'AUF
    • la version qui vient avec debian sur les serveurs de production
    • sauf si vous êtes prêt à assurer une maintenance manuelle de Django


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
  • environnements
    • développement (DEV)
    • déploiement (PROD, TEST)

Django

Pourquoi Django vs autre framework (ex.: CherryPy, Pyramid, web2py)

  • tout-en-un
  • admin : meilleur vendeur ;)

  • docs
  • communauté : utilisation répandue

Principaux fichiers

  • urls.py
  • views.py
  • models.py
  • templates (HTML)
  • admin.py


PARTIE 2 : PROJET ET APPLICATIONS

Projet : définition du besoin

La Direction de l'AUF souhaite pouvoir créer une cartographie des établissements membres de l'AUF.

(Un projet de cette nature existe réellement, il s'agit ici d'une simplification pour travailler sur un projet vraisemblable.)

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

Création du projet

Le projet se nomme "Cartographie des membres".

django-admin.py startproject carto
cd carto
  • Django 1.1.1
    • django-admin startproject carto
      cd carto
  • survol des fichiers générés

python manage.py runserver
  • settings.py
    • DATABASES = {
          'default': {
              'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
              'NAME': 'carto.db',                      # Or path to database file if using sqlite3.
              'USER': '',                      # Not used with sqlite3.
              'PASSWORD': '',                  # Not used with sqlite3.
              'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
              'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
          }
      }

Création d'une application

python manage.py startapp annuaire

South

  • settings.py
    • INSTALLED_APPS = (
          # ...
          'south',
      )
  • créer une migration pour une nouvelle application
    • python manage.py schemamigration annuaire --initial
      • South 0.6
        • python manage.py startmigration annuaire --initial
    • créer une migration pour un application existante (pas le cas ici)

      • python manage.py schemamigration --auto
  • créer les tables de south
    • python manage.py syncdb
  • appliquer les migrations
    • python manage.py migrate annuaire

Si vous n'avez pas South d'installé, créez directement les tables sans suivre leur évolution:

  • création des tables dans DB correspondant à nos modèles
    • python manage.py syncdb

PARTIE 3 : BACKEND (ADMIN)

Backend : gérer les données dans l'admin

  • urls.py
    • activer admin : décommenter

      # ...
      
      from django.contrib import admin
      admin.autodiscover()
      
      urlpatterns = patterns('',
          # ...
          url(r'^admin/', include(admin.site.urls)),
      )
  • http://127.0.0.1:8000/

  • settings.py
    • INSTALLED_APPS = (
          # ...
          'django.contrib.admin',
          # ...
      )
  • créer les tables de l'admin
    • python manage.py syncdb
  • http://127.0.0.1:8000/admin/

  • annuaire/admin.py
  • http://127.0.0.1:8000/admin/

  • annuaire/models.py
    • def __unicode__(self):
          return ""  # coder ici la chaîne unicode désirée que l'on veut retourner

      ajouter des attributs (des champs) et des méthodes à nos modèles existants

      • Personne.prenom
      • Personne.date_naissance
      • Etablissement.sigle

    Si south est installé, créer et appliquer la migration :

    • python manage.py schemamigration annuaire --auto
      python manage.py migrate annuaire

    Sinon :

    • supprimer carto.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
  • annuaire/models.py
    • ajouter une relation entre nos Etablissement et Personne
      • Personne.universite
    • modifier la base de données en conséquence :
      • south : créer et appliquer la migration
      • autre : supprimer la DB et syncdb
  • ajouter quelques Etablissements et Personnes dans l'admin

Backend pimpé : ModelAdmin

https://docs.djangoproject.com/en/1.4/ref/contrib/admin/


CONCLUSION : POUR CONTINUER


Ateliers/Django/Backend/Support (dernière édition le 2012-08-31 05:21:57 par DavinBaragiotta)