Première application Django

Introduction :

Django est un framework python open-source consacré au développement web 2.0. Les concepteurs de Django lui ont attribué le slogan suivant: « Le framework web pour les perfectionnistes sous pression ». Il est donc clairement orienté pour les développeurs ayant comme besoin de produire un projet solide rapidement et sans surprise … c’est à dire à tous les développeurs !

Comme il est toujours compliqué de partir de rien, Django vous propose une base de projet solide. Django est donc une belle boite à outils qui aide et oriente le développeur dans la construction de ses projets.

Pour la petite histoire Django a vu le jour en 2003 et a été publié sous licence BSD en juillet 2005.

 

Pré-requis :

Dans ce tuto nous partons du principe ou le système d’exploitation est déjà installé avec python2.7  l’utilisateur est root (ce qui n’est pas sécurisé mais qui m’a permis un gain de temps) et j’utilise debian 9 comme distribution .

Installation de django et configuration

Installation des paquets pythons nécessaires :

(la commande ci dessous n’est pas du python mais une commande LINUX)

apt install python-setuptools python-pip && pip install virtualenvwrapper

(le && dans la commande permet de faire faire 2 commandes en une mais si vous le préférer vous pouvez dissocier les 2 commandes ).

Création de  l’environnement virtuel Python

Vu que c’est un environnement virtuel, vous pouvez le mettre où vous voulez. Personnellement, je l’ai mis dans /home/django (pas logique vu que c’est un dossier réservé pour les dossiers personnels des utilisateurs mais plus simple dans le cas de ce tutoriel)

cd /home
mkdir django
cd /home/django
virtualenv p27env

Activer cet environnement virtuel :

source p27env/bin/activate

Pour simplifier cette manipulation dans le futur développement de votre application, je vous conseille de créer un allias dans le bashrc

alias django='cd /home/django/ && virtualenv p27env && source p27env/bin/activate'

alias l='ls -la --color=auto '

Cette commande (django) est désormais créée donc utilisable à la prochaine ouverture.

Installation sur le virtualenv des différents modules nécessaires  :

pip install Django argparse django-extensions sqlparse fabric ipdb

Démarrer le projet Django <<hellodjango>> (hellodjango est le nom du projet)

django-admin startproject hellodjango

Création de l’application  hellodjango :

cd hellodjango/
chmod +x manage.py
./manage.py startapp helloapp

Préparer la base de données :

./manage.py

Création d’un super utilisateur pour l’administration du site :

./manage.py createsuperuser

On peut maintenant lancer le serveur de test de django :

Ici le serveur de test écoutera sur le port 8000 et écoutera toutes les adresses ip

./manage.py runserver 0:8000

 

Définition du modèle du projet django :

la première étape de la création d’une application Web Django est de définir le modèle, c’est a dire le schéma de base de données. le modèle est la seule source de données pour les données manipulées par l’application Django.

# -*- coding: utf-8 -*-
from django.db import models
from datetime import datetime    
# Create your models here.
class Mesure(models.Model):
	auteur = models.CharField(default='adriano',max_length=100)
	titre = models.CharField(default='Nantes T719999',max_length=100)
	code_site = models.CharField(default='T719999',max_length=40)
	horodatage = models.DateTimeField(default=datetime.now())
	etat_travaux = models.CharField(default='Swap',max_length=50)
	id_photo = models.IntegerField(default=1)
	tel_tech = models.CharField(default='0655881177',max_length=10)
	def __unicode__(self):
		return str(self.id)

La classe Mesure est une sous-classe de la classe django.db.models.Model et sera représentée dans la base de données du projet Django. Chaque variable de la classe de Mesure (auteur,titre,code_site etc) sera représentée par un champ dans la table. Les instances de la classe Mesure seront les enregistrements dans la base de données.

(Ce qu’il faut retenir c’est qu’une classe=une table et une variable=un champ dans une table)

Maintenant il faut modifier le Setting.py dans HELLODJANGO/HELLODJANGO

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'helloapp',

]

Entrez la commande suivante pour signifier a Django que le modèle a évolué et que vous voulez stocker le changement sous la forme d’une migration.

./manage.py makemigrations helloapp

Entrez la commande suivante pour créer la table correspondant au modèle dans la base de données :

./manage.py migrate

Gestion de la base de données via l’outil admin :

Django intègre un outil d’administration de la base de données.

Lancement du Serveur Web :

./manage.py runserver 0:8000

La page d’administration est http://localhost:8000/admin

(ou alors http://{@ip du serveur:8000}/admin quand on ne travaille pas en local )

Voici à quoi ressemble la page d’administration de Django :

Il faut maintenant pour gérer la base de données helloapp modifier le fichier admin.py présent dans hellodjango/helloapp et y insérer :

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.contrib import admin
from helloapp.models import Mesure
#from helloapp.models import Formulaire

admin.site.register(Mesure)
#admin.site.register(Formulaire)
# Register your models here.

Grâce a cette modification nous pouvons désormais ajouter/modifier des valeurs dans la base de données.

Gestion de la partie URL :

Cela se gère grâce au fichier urls.py qui se trouve dans hellodjango/hellodjango

from django.conf import settings
from django.conf.urls import url, include #, patterns
from django.contrib import admin
from . import views




urlpatterns = [
	#url(r'^helloapp/',helloapp.urls),
    url(r'^admin/', admin.site.urls),
    url(r'^helloapp/', include('helloapp.urls')),
    #url(r'^helloapp/', include('helloapp.urls', namespace='helloapp', app_name='helloapp')),
]

Le views permet de rediriger en fonctions de des information inscrites dans l’URL. Le tout est géré par des regex.

Gestion de la vue :

Maintenant nous avons géré la partie base de données etc … Nous pouvons nous attaquer a la partie HTML (le frontend, ce qui est visible par l’utilisateur final)  pour configurer ça , cela se situe dans helloapp/views.py

Voici a quoi ressemble le mien :

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse
#Notion d'upload de photos pour l'application
#from .forms import UploadFileForm

# Create your views here.
def index(request):
	#return HttpResponse('<h1>YOUPPIIIII</h1>')
	#return render(request,'index.html')
	return render(request,'index.html')

Sources:

http://www.django-fr.org/

https://docs.djangoproject.com/fr/2.0/

Recommandations personnels :

Je conseille le paquet locate qui permet de retrouver ses fichier en faisant

locate {nom du fichier}
Simao-Bourgeois Adriano
BTS Systèmes Numériques option Informatique et Réseaux (1ère année)

Saint-Nazaire (2017-2018)