Pierre Grimaud - Labo web ESGI 2013

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






PYTHON + DJANGO

By Pierre Grimaud

PYTHON + DJANGO

  • 1,154