Django par la pratique 4/7

Sébastien Bonnegent

Départ

Support

  • cours4.html

Préparation

L’ancien

$ cd fwm3
$ pipenv --rm

Le nouveau

$ cd fwm4
$ pipenv install

Au programme

  • rappel sur les fichiers
  • authentification, limitation d’accès
  • vue liste générique (Parefeu)
  • vue détail générique (Parefeu)
  • envoi de mails
  • formulaire simple (contact)
  • messages

Rappel

Rôle de chaque fichier

  • ./manage.py: contrôles et commandes
  • ./db.sqlite3: base de données
  • Pipfile: dépendances primaires
  • Pipfile.lock: toutes les dépendances

Rôle de chaque fichier

  • conf/settings.py: configuration
  • conf/urls.py: routage des URI
  • conf/wsgi.py: pour la production

Rôle de chaque fichier

  • webui/views.py: manipulations des objets
  • webui/forms.py: formulaires
  • webui/admin.py: administration
  • webui/templates/: préparation de l’affichage
  • webui/migrations/: évolution de la BD
  • webui/tests.py: les tests
  • webui/models.py: les modèles

Authentification

à modifier

webui/templates/webui/home.html

{% if user.is_authenticated %}
...
    {% if user.is_staff %}
    ...
    {% endif %}
{% endif %}

conf/urls.py

à modifier

conf/settings.py

à modifier

webui/templates/registration/login.html

  • le template doit être présent

conf/urls.py

Vue liste générique

Parefeu

Documentation

https://docs.djangoproject.com/fr/2.2/topics/class-based-views/generic-display/

Implémentation

webui/views.py

Templates

webui/templates/webui/parefeu_list.html

Routage

conf/urls.py

Templates

webui/templates/webui/home.html

Implémentation

webui/views.py

Vue détail générique

Parefeu

webui/views.py

Routage

conf/urls.py

Templates

webui/templates/webui/parefeu_detail.html

Accés facile

webui/templates/webui/parefeu_list.html

à faire

  • ServiceList
  • PortList

Mail

Envoi de mails

Documentation

  • https://docs.djangoproject.com/fr/2.2/topics/email/
  • en production, envoi des messages d’erreurs
  • différents des Users ‘superadmins’

Envoi de mails

conf/settings.py

un faux serveur smtp

$ pipenv run ./manage.py help mail_debug
$ pipenv run ./manage.py mail_debug --use-settings

Formulaire simple

Formulaire de contact

  • contrôler la partie la liste des services
  • bouton sur les pages listes des services et des ports
  • pouvoir demander la création de service/port aux admins
  • https://docs.djangoproject.com/fr/2.2/topics/class-based-views/generic-editing/

Suivre la documentation

à modifier

  • webui/forms.py
  • webui/views.py
  • webui/templates/webui/contact.html
  • conf/urls.py

Messages

Pourquoi ?

  • affichage facile à l’utilisateur
  • permet un retour sur les opérations
  • fourni par Django

Mise en place

webui/views.py

Mise en place

webui/templates/webui/home.html

{% for message in messages %}
    {% if message.tags == "error" %}
        <div class="alert alert-danger" role="alert">
    {% else %}
        <div class="alert alert-{{ message.tags }}" role="alert">
    {% endif %}
    {{ message }}</div>
{% endfor %}

FIN !