Présentation Notre premier projet Exercice final. Formation Django. Maxime Arthaud. Mardi 17 novembre 2014



Documents pareils
Django. Framework de développement Web

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

les techniques d'extraction, les formulaires et intégration dans un site WEB

Attaques applicatives

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

Bases de Données et Internet

Module BD et sites WEB

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

SYSTÈMES D INFORMATIONS

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Sécurité des applications web. Daniel Boteanu

Hébergement de site web Damien Nouvel

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

Par KENFACK Patrick MIF30 19 Mai 2009

Refonte des sites internet du SIEDS

INTRODUCTION À PYRAMID Gaël Bearstech. Crédits: Blaise Laflamme

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Guide d implémentation. Réussir l intégration de Systempay

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Mise en place d un serveur Proxy sous Ubuntu / Debian

e-obs : Conception et utilisation Rémy Decoupes Ether // ums3365

Failles des applications Web. Ce document est extrait du travail de diplôme de M. DIZON dans l état.

PHP 5.4 Développez un site web dynamique et interactif

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

CMS Modules Dynamiques - Manuel Utilisateur

Manuel : Comment faire sa newsletter

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

NAMEBAY PRO. votre site de revente de noms de domaine en marque blanche. Documentation technique

Module Retour Produit Guide d intégration et d utilisation Version 1.0

arcopole Studio Annexe 7 Architectures Site du programme arcopole :

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

UTILISATEUR. Notice d utilisation du service Support de Psi Informatique

Formulaires et Compteurs

SERVEUR WEB. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Le serveur HTTPd WASD. Jean-François Piéronne

Django et PostgreSQL sous la charge

Créer une connexion entre Sage CRM et Sage Etendue pour émettre directement des devis et commandes

Guide d utilisation 2012

CAHIER DES CHARGES SITE WEB : Steve Mind Magicien Close-up & Mentaliste - 1 -

Administration du site (Back Office)

Serveur d Applications Web : WebObjects

Savoir- Faire Offres mé1ers Offres technologiques

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Les cahiers pratiques de Anonymat.org. SocksCap32. Edition du 20 Octobre 2000

CRÉER SON SITE INTERNET. Créer son site Internet. Méd de Roanne. FG 16/09/08

Joomla! Création et administration d'un site web - Version numérique

Guide d implémentation Interface avec la plateforme de paiement

AnaXagora LMS v3.0. Guide d utilisation

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Etude et développement d un moteur de recherche

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

Architectures Web Services RESTful

MANUEL D INSTALLATION D UN PROXY

API HTTP DOCUMENTATION TECHNIQUE PLATEFORME SAAS D'ENVOI DE SMS. Version Mise à jour : 3 juillet 2015

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Projet en nouvelles technologies de l information et de la communication

TP JAVASCRIPT OMI4 TP5 SRC

Gestion de stock pour un magasin

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Web Tier : déploiement de servlets

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Module pour la solution e-commerce Magento

Master1 ère année. Réseaux avancés I. TP nº5 filière ISICG

Manuel d utilisation du site web de l ONRN

Vulnérabilités et solutions de sécurisation des applications Web

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

4. Personnalisation du site web de la conférence

Haka : un langage orienté réseaux et sécurité

BES WEBDEVELOPER ACTIVITÉ RÔLE

Fiche Produit IPS Manager Assistant

... Cahier des charges Site Internet Office de Tourisme Lesneven - Côte des Légendes MAITRE D OUVRAGE

Déploiement des manuels numériques sur tablette. Mode d emploi intégrateur / administrateur

PloneLabs un gestionnaire de contenu pour les laboratoires

Unix/Linux I. 1 ere année DUT. Université marne la vallée

WWSympa, une interface web pour Sympa

Etude de la pertinence et de l'intérêt des appliances WAF (IPS web) à l'inria

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Programmation Web. Madalina Croitoru IUT Montpellier

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

INTRODUCTION. Bienvenue dans la TCN FRENCH TEAM, nous allons ensemble démarrer une belle aventure qui peut devenir lucrative pour tous.

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

Soyez accessible. Manuel d utilisation du CMS

Présentation de Plone Structure de Plone Les skins Les workflows Archetypes Conclusion. Plone. Gaël LE MIGNOT Pilot Systems.

VIDÉOSURVEILLANCE. Procédures de paramétrage des différentes box du marché

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Devenez un véritable développeur web en 3 mois!

RÉALISATION D UN SITE DE RENCONTRE

Stockage du fichier dans une table mysql:

Fiche Produit Desktop Popup

PLATEFORME DE GESTION DE CONGRÈS SCIENTIFIQUES. 12 mars 2015

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Transcription:

Maxime Arthaud Mardi 17 novembre 2014 Présentation disponible sur http://www.bde.enseeiht.fr/clubs/ /supportformations/django/2014

Django? Un framework Gestion des requêtes et des URL Interface vers une base de données Formulaires Authentification des utilisateurs...... mais pas un CMS

Django? Un framework Gestion des requêtes et des URL Interface vers une base de données Formulaires Authentification des utilisateurs...... mais pas un CMS

Django? Un framework Gestion des requêtes et des URL Interface vers une base de données Formulaires Authentification des utilisateurs...... mais pas un CMS

Django? Un framework Gestion des requêtes et des URL Interface vers une base de données Formulaires Authentification des utilisateurs...... mais pas un CMS

Django? Un framework Gestion des requêtes et des URL Interface vers une base de données Formulaires Authentification des utilisateurs...... mais pas un CMS

Django? Un framework Gestion des requêtes et des URL Interface vers une base de données Formulaires Authentification des utilisateurs...... mais pas un CMS

Django? Un framework Gestion des requêtes et des URL Interface vers une base de données Formulaires Authentification des utilisateurs...... mais pas un CMS

Django? Attention Un framework Gestion des requêtes et des URL Interface vers une base de données Formulaires Authentification des utilisateurs...... mais pas un CMS Version actuelle : Django 1.7.1 (Python 2 et 3)

Architecture Requête URL Template Vue Modèle Réponse (HTML)

Utilisation d un virtualenv Création d un virtualenv : $ virtualenv -p python3 env Activation d un virtualenv : $ source env/bin/activate Gestion des paquets d un virtualenv : (env) $ pip install django==1.7.1

Créer un site Django Présentation $ django-admin.py startproject monsite $ tree monsite/ monsite +-- manage.py +-- monsite +-- init.py +-- settings.py +-- urls.py +-- wsgi.py $ cd monsite $ python manage.py migrate $ python manage.py runserver [...]

Votre 1e vue! Présentation 1 Créez un fichier monsite/views.py 2 Copiez y le code suivant : from django.http import HttpResponse def home(request): return HttpResponse( Hello )

La gestion des URLs Présentation 1 Ouvrez le fichier monsite/urls.py 2 Modifiez le code pour avoir : from django.conf.urls import patterns, \ include, url urlpatterns = patterns(, url(r ^$, monsite.views.home ), )

URLs et expressions régulières #... suite de l urlpattern dans urls.py (r ^annee/(\d{4})$, monsite.views.annee ), (r ^aff/(?p<texte>.+)/$, monsite.views.aff ), # vues associees dans views.py def annee(request, year): return HttpResponse( On est en %s % year) def aff(request, texte): return HttpResponse( Bonjour %s % texte)

Première application Présentation $ python manage.py startapp monapp $ ls monapp init.py models.py tests.py views.py 1 ajouter l application dans le tuple INSTALLED_APPS de settings.py 2 bonne pratique : monapp/urls.py

Découplage des URLs # Rajouter cet urlpattern dans monsite/urls.py url(r ^monapp/, include( monapp.urls )) # monapp/urls.py from django.conf.urls import patterns, include, url urlpatterns = patterns( monapp.views, url(r ^$, index ), url(r ^info$, info ), )

Création d un modèle 1 Configurer la base de donnée dans settings.py 2 Créer les modèles 3 Générer les tables à partir du modèle Page de référence sur la configuration des bases de données : https: //docs.djangoproject.com/en/dev/ref/settings/#databases Page de référence sur les champs des modèles : https://docs.djangoproject.com/en/dev/ref/models/fields/

Premier modèle Présentation # monapp/models.py from django.db import models class Article(models.Model): nom = models.charfield(verbose_name="nom de l article"\, max_length=128) description = models.textfield(max_length=512) prix = models.decimalfield(decimal_places=2, max_digits=6) def str (self): return self.nom

Création de la base de donnée Système de migrations : $ python manage.py makemigrations Mise à jour de la base de données : $ python manage.py migrate Visualiser une base de donnée sqlite : $ sqliteman db.sqlite3

Premières requêtes Présentation $ python manage.py shell Manipuler les modèles : Modele.objects.all() Modele.objects.get() Modele.objects.filter() entree.delete() entree.save() Pages de référence : https://docs.djangoproject.com/en/dev/topics/db/queries/ https: //docs.djangoproject.com/en/dev/ref/models/querysets/

Présentation Template = page html liée à une vue 1 configurer TEMPLATE_DIRS dans settings.py 2 définir les variables affichées/utilisées par le template et les regrouper dans un dictionnaire 3 changer la vue pour quelle renvoie render(request, montemplate.html, dictionnaire) Pages de référence : https://docs.djangoproject.com/en/dev/ref/templates/api/ https://docs.djangoproject.com/en/dev/ref/templates/ builtins/?from=olddocs

Exemple d utilisation Présentation La vue from monapp.models import Article from django.shortcuts import render def index(request): c = { articles : Article.objects.all()} return render(request, index.html, c) Le template index.html <h1>liste des articles</h1> <ul> {% for a in articles %} <li>{{ a.nom }}</li> {% endfor %} </ul>

Etendre des blocs Présentation Page principale, main.html <html lang="fr"> <head><title>{% block title %}{% endblock %}</title></head> <body> <h1>bienvenue!</h1> {% block content %}{% endblock %} </body> </html> Page affichage.html qui va étendre main.html {% extends "main.html" %} {% block title %}Le titre de ma page{% endblock %} {% block content %} Du contenu ici. {% endblock %}

A la main Présentation Définition du formulaire, forms.py from django import forms class InscriptionForm(forms.Form): login = forms.charfield(required=true) password = forms.charfield(label= Mot de passe, required=true, widget=forms.passwordinput) code = forms.integerfield() Son template, edit.html <form action="" method="post"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="submit" /> </form>

Vue d un formulaire Présentation from django.shortcuts import redirect def inscription(request): if request.method == POST : form = InscriptionForm(request.POST) if form.is_valid(): # Faire qqch avec les donnees.. return redirect( monapp.views.merci ) else: form = InscriptionForm() return render(request, inscription.html, { form : form})

A partir d un modèle Présentation Formulaire, forms.py class ArticleForm(models.ModelForm): class Meta: model = Article fields = ( login, password, code ) Vue, views.py objet = get_object_or_404(article, pk=1) if request.method == POST : form = ArticleForm(request.POST, instance=objet) if form.is_valid(): form.save() return redirect(objet) else: form = ArticleForm(instance=objet) return render(request, edit.html, { form : form})

1 Décommenter les lignes concernant l interface d administration dans settings.py et urls.py 2 Mettre à jour les tables (syncdb) 3 Pour chaque application, indiquer les modèles pris en charge par l interface d administration via un fichier admin.py comme suit : from monapp.models import Modele1, Modele2 from django.contrib import admin admin.site.register(modele1) admin.site.register(modele2)

Exercice : FaceMash Cahier des charges, fonctions à implémenter : ajouter/éditer un utilisateur (Nom, adresse mail, photo) via un formulaire visualiser une liste des utilisateurs triée selon leur score visualiser le profil d un utilisateur enregistrer les votes : date, vote, ip du votant (on est méchant) afficher la liste des votes vote : afficher les photos de 2 utilisateurs choisis aléatoirement, le vote s effectue en cliquant sur l une des photos interface d administration