1 / 32

Soutenance Stage L3 INFO Guillaume Ansel

Soutenance Stage L3 INFO Guillaume Ansel. Création d’un site Internet dynamique avec le framework Django. Plan. Introduction Présentation du sujet choisi Conception Générale Conception Détaillée Synthèse Conclusion. 1. Introduction. 1. Introduction. Stage de Licence Informatique

Download Presentation

Soutenance Stage L3 INFO Guillaume Ansel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Soutenance Stage L3 INFO Guillaume Ansel Création d’un site Internet dynamique avec le framework Django

  2. Plan • Introduction • Présentation du sujet choisi • Conception Générale • Conception Détaillée • Synthèse • Conclusion Guillaume Ansel

  3. 1. Introduction Guillaume Ansel

  4. 1. Introduction • Stage de Licence Informatique • Durée : 10 semaines • Sujet : « Création d’un site Internet dynamique pour la société Studio Odyssée » • Entreprise d’accueil : Studio Odyssée • Encadrement : Virginie MARION-POTY Guillaume Ansel

  5. 2. Présentation du sujet Guillaume Ansel

  6. 2. Présentation du sujet • « Création d’un site Internet pour la société Studio Odyssée » Guillaume Ansel

  7. 2. Présentation du sujet • Présentation des activités de la société • Logiciel • Internet • Infographie • Marketing & Communication • Site dynamique • Contenu dynamique • Espace client Guillaume Ansel

  8. 3. Conception Générale Guillaume Ansel

  9. 3. Conception Générale3.1 Les outils • Développement du site avec le langage Python • Utilisation du framework web Django (pre-1.0) • Gestion des sources avec Subversion • Codage des pages en XHTML 1.0 • Mise en page avec les feuilles de style CSS (Cascading Style Sheets) Guillaume Ansel

  10. 3. Conception Générale3.2 Le framework • Le développement du site s’appuie sur l’utilisation du framework django. • Nombreux avantages : • Inclus un ORM (Object-RelationalMapping) • Interface d’administration générée automatiquement • Gestion des URL propre • Système de template puissant • (Système de mise en cache) • (Internationalisation) Guillaume Ansel

  11. 3. Conception Générale3.3 Le principe • Conception proche du système MVC (Modèle Vue Contrôleur) Guillaume Ansel

  12. 3. Conception Générale3.3 Le principe Modèle • Couche de données • Encapsulées dans des objets grâce à l’ORM • Abstraction par rapport au support de stockage • Gestion des liaisons de type : • Un à Un • Un à Plusieurs • Plusieurs à Plusieurs • Gestion des contraintes d’intégrités • Django créé la BDD à partir des modèles Guillaume Ansel

  13. 3. Conception Générale3.3 Le principe Vue • Correspond à une page Web offrant un service spécifique • Définit quelle données doit être affichées et renvoie une réponse HTTP. • Différente réponse HTTP selon les cas : • 200: requête valide contenant la page demandée • 403: requête non autorisée • 404: la page demandée n’existe pas • 500: erreur dans l’exécution du code de la vue • D’autres type de réponses si besoin Guillaume Ansel

  14. 3. Conception Générale3.3 Le principe Contrôleur • N’apparait pas explicitement du point de vue du développeur • Peut-être considéré comme étant le framework lui-même • Redirige les URL vers la vue correspondante • Django utilise une interprétation différente du patron de conception original MVC, plus proche des besoins des auteurs du framework. Guillaume Ansel

  15. 3. Conception Générale3.3 Le principe Template • Présentation des données • Langage de template puissant • Structure conditionnelle • Boucle • Héritage • Filtres • Sortie en format texte • HTML • CSV • Texte Guillaume Ansel

  16. 4. Conception Détaillée Guillaume Ansel

  17. 4. Conception Détaillée4.1 Les applications Projet vs Application • Un projet regroupe un ensemble de fonctionnalités • Les fonctionnalités peuvent être regroupées dans des applications • Une application peut-être partagée par plusieurs projets différents • Nom du projet: studioodyssee Guillaume Ansel

  18. 4. Conception Détaillée4.1 Les applications Guillaume Ansel

  19. 4. Conception Détaillée4.2 Diagramme de classe UML Guillaume Ansel

  20. 4. Conception Détaillée4.3 Fonctionnement nominal Guillaume Ansel

  21. 4. Conception Détaillée4.4 Exemple Modèle: Billet class Billet(models.Model): titre = models.CharField(u’Titre’, max_length=128) contenu = models.TextField(u’Contenu’) contenu_html = models.TextField(editable=False) auteur = models.ForeignKey(User) publication_date = models.DateField(u’Date de publication’, auto_now_add=True) defsave(self): self.contenu_html = textile(self.contenu) super(Billet, self).save() Guillaume Ansel

  22. 4. Conception Détaillée4.4 Exemple Vue:liste_billet defliste_billet(request): try: billets = Billet.objects.all().order_by(‘-publication_date’) except: raiseHttp404 return render_to_response(‘liste_billet.html’, {‘billets’:billets,}, \ context_instance = RequestContext(request)) Guillaume Ansel

  23. 4. Conception Détaillée4.4 Exemple Template: liste_billet.html <!DOCTYPE html> <html lang="fr"> <head> <title>Studio Odyssée - Un Projet</title> </head> <body> <div id="liste-billet">{% for billet in billets %} <h2>{{ billet.titre }}</h2> <span class="auteur">{{ billet.auteur }}</span> {{ billet.contenu_html|safe }} {% endfor %}</div> </body> </html> Guillaume Ansel

  24. 4. Conception Détaillée4.4 Exemple Résultat: <!DOCTYPE html> <html lang="fr"> <head> <title>Studio Odyssée - Un Projet</title> </head> <body> <div id="liste-billet"> <h2>Billet 1</h2> <span class="auteur">Guillaume</span> <p>contenu premier billet.</p> <h2>Billet 2</h2> <span class="auteur">Guillaume</span> <p>contenu deuxième billet.</p> </div> </body> </html> Guillaume Ansel

  25. 4. Conception Détaillée4.5 Déploiement En cours de développement • Serveur web Python fournit par le framework • Pas besoin de serveur Web dédié (Apache, LighTPD) • Configuration automatique (d’après le fichier settings.py) • Interface sur 127.0.0.1:8000 par défaut • Mais pas utilisable en production Guillaume Ansel

  26. 4. Conception Détaillée4.5 Déploiement En production • Méthode recommandée : Apache + mod_python • Django est compatible avec les protocoles WSGI (CGI,FastCGI, SCGI) • Hébergement djangohosting.ch • Mise en place du site sur un serveur Web LighTPD • Interface FastCGI entre LighTPD et le processus django Guillaume Ansel

  27. 4. Conception Détaillée4.5 Déploiement En production Requête HTTP Processus django FastCGI LighTPD socket Réponse HTTP Guillaume Ansel

  28. 5. Synthèse Guillaume Ansel

  29. 5. Synthèse Préparation • Installation des composants Développement • Découpage en applications • Choix des URL • Création des modèles de données • Ecriture des vues • Rédaction des templates associées Déploiement • Apache + mod_python • LighTPD + FastCGI Guillaume Ansel

  30. 6. Conclusion Guillaume Ansel

  31. 6. Conclusion • Projet intéressant car s’inscrivant dans le cadre d’une création d’entreprise • Cadre de travail intéressant, participation active dans les choix techniques • Apprentissage d’un nouveau langage de programmation (Python) • Nouvelle technique de développement basé sur l’utilisation du framework django (DRY « Don’tRepeatYourself») Guillaume Ansel

  32. Questions ? Guillaume Ansel

More Related