La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Soutenance Stage L3 INFO Guillaume Ansel

Présentations similaires


Présentation au sujet: "Soutenance Stage L3 INFO Guillaume Ansel"— Transcription de la présentation:

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érale 3.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érale 3.2 Le framework
Le développement du site s’appuie sur l’utilisation du framework django. Nombreux avantages : Inclus un ORM (Object-Relational Mapping) 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érale 3.3 Le principe
Conception proche du système MVC (Modèle Vue Contrôleur) Guillaume Ansel

12 3. Conception Générale 3.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érale 3.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érale 3.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érale 3.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ée 4.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ée 4.1 Les applications
Liste des applications Index Pages statiques Contact Syndication Actualite Derniers billets Archives Projet Liste des projets Détail d’un projet Membres Espace personnel Contrib Regroupe les fonctions utilitaires Guillaume Ansel

19 4. Conception Détaillée 4.2 Diagramme de classe UML
Guillaume Ansel

20 4. Conception Détaillée 4.3 Fonctionnement nominal
Le visiteur envoie une requête Lien FastCGI entre le serveur Web et processus django Le framework traite la requête (session, identification, …) Redirection vers la vue correspondante La vue réalise les opérations demandées Charge les données des modèles Traite les formulaires si besoin Renvoie une réponse HTTP Réponse HTTP (200, 403, 404, 500, …) contenant la page demandée par le visiteur Guillaume Ansel

21 4. Conception Détaillée 4.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) def save(self): self.contenu_html = textile(self.contenu) super(Billet, self).save() Guillaume Ansel

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

23 4. Conception Détaillée 4.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ée 4.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> <p>contenu deuxième billet.</p> </div> </body> </html> Guillaume Ansel

25 4. Conception Détaillée 4.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 :8000 par défaut Mais pas utilisable en production Guillaume Ansel

26 4. Conception Détaillée 4.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ée 4.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’t Repeat Yourself ») Guillaume Ansel

32 Questions ? Guillaume Ansel


Télécharger ppt "Soutenance Stage L3 INFO Guillaume Ansel"

Présentations similaires


Annonces Google