Django par la pratique 1/7

Sébastien Bonnegent

Django

Qu’est ce que c’est ?

The web framework for perfectionists with deadlines.1

  • framework web python de haut niveau
  • rapide à mettre en place
  • flexible

Avantages

  • factorisation du code
  • interface d’administration automatique
  • architecture MVC (Model-Template-View)
  • ORM: postgresql, mysql, sqlite, oracle, …
  • serveur de développement intégré
  • gestion des migrations

Inconvénients

  • ?

Utiliser par

  • disqus
  • dropbox (storage)
  • instagram
  • mozilla
  • open stack
  • pinterest
  • spotify
  • youtube

Prérequis

L’environnement pipenv2

$ git clone https://gitlab.insa-rouen.fr/bonnegent/cours_django.git
$ cd cours_django
$ mkdir fwm1
$ cd !$
$ pipenv --python 3.6
$ pipenv install django django-extensions ipython

Projet ou application ?

Une application est une application Web qui fait quelque chose – par exemple un système de blog, une base de données publique ou une application de sondage. Un projet est un ensemble de réglages et d’applications pour un site Web particulier. Un projet peut contenir plusieurs applications. Une application peut apparaître dans plusieurs projets.3

Création du projet

$ pipenv run django-admin startproject conf .

Création d’une application

$ pipenv run django-admin startapp webui

Activation de l’application

conf/settings.py

Configuration

conf/settings.py

Pour générer une nouvelle clé secrête

$ pipenv run ./manage.py generate_secret_key
f#wgrz$@#wh@*x5)_+(*$$^aw(c!q#a4)c0230bwp!iy

Gestion des migrations

Création (si nécessaire)

$ pipenv run ./manage.py makemigrations

Application

$ pipenv run ./manage.py migrate

Quelques commandes utiles

$ pipenv run ./manage.py shell
$ # shell avec chargement automatique des classes
$ pipenv run ./manage.py shell_plus
$ pipenv run ./manage.py createsuperuser

Serveur de développement

$ pipenv run ./manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
September 28, 2017 - 13:29:48
Django version 1.11, using settings 'conf.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Notre projet

But

Gestion des règles des parefeux à travers une interface web. On pourra créer des groupes de ports / services et gérer plusieurs parefeux différents.

Diagramme des classes

Note: pas de clé primaire !

À vous de jouer !

Ports

  • protocole: any (défaut), tcp, udp, icmp
  • début: entier positif, 0 par défaut
  • fin: entier positif, 0 par défaut

webui/models.py

Appliquer les modifications

$ pipenv run ./manage.py makemigrations
Migrations for 'webui':
  webui/migrations/0001_initial.py
    - Create model Port
$ pipenv run ./manage.py migrate
...

Contenu d’une migration

$ cat webui/migrations/0001_initial.py

Shell django

pipenv run ./manage.py shell

webui/models.py

Modifier l’affichage des instances.

Shell plus

pipenv run ./manage.py shell_plus

webui/models.py

Modifier l’ordre des instances.

shell

Récupération

Création si besoin

Sélection

Suppression

webui/models.py

Faire la classe suivante

Adresse

- nom: chaine de caractères (25)
- ip: une adresse IP
- masque: le masque réseau (défaut: 32)

Documentation

Django

  • https://docs.djangoproject.com/fr/
    • partie modèle
  • https://docs.djangoproject.com/fr/2.2/intro/tutorial01/
    • tutoriel officiel

  1. https://www.djangoproject.com/

  2. https://gitlab.insa-rouen.fr/bonnegent/cours_django/wikis/pipenv

  3. https://docs.djangoproject.com/fr/2.2/intro/tutorial01/