Pierre Grimaud - Labo web ESGI 2013
PYTHON + DJANGO
PYTHON + DJANGO
Points clefs de PYTHON
Langage de programmation orienté objet
Idéal pour commencer à coder
Version actuelle : 3.3.3
Première version : 1989
A QUOI ça ressemble?
Simple if else
# Ma belle condition
if x < 2:
return true
else:
return false
foreach
# Ma belle boucle
for pokemon in pokedex :
print (pokemon.name)
Attention, la syntaxe est très stricte!
POINTS CLEFS DE DJANGO
Framework web Python
Version : 1.6.1
Sites utilisant Django :
Instagram
Pinterest
Mozilla
MVT (vues générées par les templates)
ORM
Routing facile
INSTALLATION DE PYTHON
Pour Windows :
Google : "download python 2.7"
Premier lien, télécharger puis installer
Ajouter le dossier contenant python dans les variables d'environnement
Pour Linux :
Installé de base sur la plupart des distribs
"apt-get install python" au cas où
Pour Mac :
FAR, y'a rien a faire
INstallation de Django (1/3)
Télécharger l'archive sur https://www.djangoproject.com/download/
Dézipper l'archive et se rendre dans le dossier de l'archive via cmd/terminal
Lancer la commande :
python setup.py install
Se rendre dans le répertoire Django (dans le répertoire Python)
Créer un nouveau projet :
django-admin.py startproject pokedex
INSTALLATION DE DJANGO (2/3)
Se rendre dans le répertoire pokedex et lance la commande
python manage.py runserver
Se rendre sur http://127.0.0.1:8000
Le serveur est actif, passons maintenant à la configuration.
Edition du fichier urls.py
url(r'^admin/', include(admin.site.urls))
Tester la page http://127.0.0.1:8000/admin
INSTALLATION DE DJANGO (3/3)
On a pas de bases créées pour le moment, donc on lance la commande
python manage.py syncdb
Les bases sont ajoutées, on peut maintenant se logger sur http://127.0.0.1:8000/admin
PREmierE APplication (1/2)
On va créer une application pokemon
python manage.py startapp pokemon
Un répertoire est maintenant créé. Se rendre dedans.
On a donc de nouveaux fichiers.
Editer le fichier models.py
from django.db import models
class Pokemon(models.Model):
id_pokemon = models.IntegerField()
name = models.CharField(max_length=200)
PREMIERE APPLICATION (2/2)
Puis ajouter notre nouvelle application dans le fichier settings.py de notre projet.
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'pokemon',
)
python manage.py syncdb
GESTION DE L'INDEX (1/2)
On veut que la homepage liste tous les pokémons de la base
Editer pokedex/urls.py
from django.conf.urls import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^$', 'pokemon.views.index'),
url(r'^admin/', include(admin.site.urls)),
)
Mais il faut aussi ajouter la methode index dans le fichier pokemon/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, pokedex.")
GESTION DE L'INDEX (2/2)
Maintenant, il faut récupérer les valeurs dans la bdd
On va se servir de l'orm de Django
Pokemons = Pokemon.objects.all().order_by('id_pokemon')
Puis passer le résultat au template pokemon/index.html
def index(request):
Pokemons = Pokemon.objects.all().order_by('id_pokemon')
t = loader.get_template('pokemon/index.html')
c = Context({
'Pokemons': Pokemons,
})
return HttpResponse(t.render(c))
GESTION DES POKEMONS (1/2)
On veut que la page pokemon/xx, nous donne le nom de du pokémon #xx
On remodifie le fichier pokedex/urls.py
urlpatterns = patterns('',
url(r'^$', 'pokemon.views.index'),
url(r'^pokemon/(?P<id>\d)/$', 'pokemon.views.pokemon'),
url(r'^admin/', include(admin.site.urls)),
)
Et le fichier pokemon/views.py
def pokemon(request, id):
Pkmn = Pokemon.objects.get(id_pokemon=id)
HttpResponse(loader.get_template('pokemon/pokemon.html').render(Context({'Pokemon': Pkmn,})))
GESTION DES POKEMONS (2/2)
Améliorer le code avec une gestion d'exception
from django.http import Http404
# ...
def pokemon(request, id): try: Pkmn = Pokemon.objects.get(id_pokemon=id) except Pokemon.DoesNotExist: raise Http404 return HttpResponse(loader.get_template('pokemon/pokemon.html').render(Context({'Pokemon': Pkmn,})))
Liens utiles
https://docs.djangoproject.com/ (Multi-langues)
http://fr.openclassrooms.com/informatique/cours/developpez-vos-applications-web-avec-django (très vieux, mais c'est presque le même process)
https://github.com/webdevesgi/django-demo (lien du repo)
PYTHON + DJANGO
By Pierre Grimaud
PYTHON + DJANGO
- 1,160