Commit 600f4067 authored by Bonnegent Sebastien's avatar Bonnegent Sebastien
Browse files

cours 4 ok

parent c13db1b3
......@@ -12,7 +12,7 @@
~~~
$ #!! settings.py et db.sqlite3 dans le dépôt !!
$ git clone \
git@gitlab.insa-rouen.fr:bonnegent/vehicules.git
https://gitlab.insa-rouen.fr/bonnegent/vehicules.git
$ cd vehicules
$ git checkout cours_3_debut
~~~
......
% Django par la pratique #04
% Sébastien Bonnegent
% https://framagit.org/bonnegent/cours\_django
% version 2018
# Templates
# Prérequis
## Virtual Env
* source /opt/venv/django/bin/activate
* pipenv shell
## Base
### Prérequis
~~~
$ pip install django-bootstrap3
~~~
. . .
### base.html
* webui/templates/webui/base.html
* s'inspirer de supports\_cours\_04/webui/
## Vue
### webui/views.py
~~~{.py .numberLines}
from django.shortcuts import render
def accueil(request):
"Page d'accueil par défaut"
return render(request, 'webui/base.html')
~~~
. . .
### webui/urls.py
~~~{.py .numberLines}
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.accueil, name='index'),
]
~~~
## À faire
###
* La version utilisant une TemplateView !
# Fichiers statiques
## Fichiers static en dév.
### conf/urls.py
~~~{.py .numberLines}
from django.conf import settings
from django.conf.urls.static import static
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
~~~
## CDN vs Local
### Par défaut Content Delevery Network
* faire F12 sous firefox
* temps de réponse légèrement plus long
* nécessite une connectivité
. . .
### Local, c'est mieux !
~~~
$ mkdir -p webui/static/webui/{images,css,js,fonts}
$ wget https://github.com/twbs/bootstrap/releases/download/v3.3.7/bootstrap-3.3.7-dist.zip
$ wget https://code.jquery.com/jquery-3.2.1.min.js
~~~
## Thème
### https://bootswatch.com/3/
~~~
$ wget https://bootswatch.com/3/flatly/bootstrap.min.css
$ mv bootstrap.min.css css/bootstrap-theme-flatly.min.css
~~~
### Suppression de la 1er ligne
~~~
@import url("https://fonts.googleapis.com/
css?family=Lato:400,700,400italic");
~~~
## Configuration de Django Bootstrap
### conf/settings_common.py
~~~{.py .numberLines}
BOOTSTRAP3 = {
'jquery_url': '/static/webui/js/jquery-3.2.1.min.js',
'base_url': '/static/webui/',
'theme_url': '/static/webui/css/bootstrap-theme-flatly.min.css',
}
## Base de départ
~~~
# Vues génériques
## Objectifs
###
* liste des parefeux
* liste des modèles
* liste des services
* liste des ports
## Ressources
###
* utilisation de ListView et DetailView
* https://docs.djangoproject.com/fr/1.11/topics/class-based-views/generic-display/
* templates dans supports\_cours\_04/webui/
* modifier webui/{urls.py,views.py}
## Authentifications
### webui/urls.py
~~~{.py .numberLines}
from django.contrib.auth.decorators \
import login_required
url(r'^parefeux/$',
login_required(views.ParefeuListView.as_view()),
name='parefeux'),
~~~
## Tri et recherche dans les tables
* Utilisation de https://datatables.net
* Télécharger https://datatables.net/download/index
* version bootstrap 3
* avec seulement datatables
* pas besoin de minify et concatenate
* Décompresser l'archive dans webui/static/webui/
* Télécharger la traduction française
* https://datatables.net/plug-ins/i18n/
* https://cdn.datatables.net/plug-ins/1.10.16/i18n/French.json
## Activation de datatables
### webui/templates/webui/base.html
~~~{.py .numberLines}
<link rel="stylesheet" type="text/css"
href="DataTables-1.10.16/css/dataTables.bootstrap.css"/>
<script type="text/javascript"
src="DataTables-1.10.16/js/jquery.dataTables.js">
</script>
<script type="text/javascript"
src="DataTables-1.10.16/js/dataTables.bootstrap.js">
</script>
~~~
## Utilisation de datatables
### webui/templates/webui/service\_list.html
~~~{.py .numberLines}
<table class="table table-striped" id="matable">
{# pour datatables:
https://www.datatables.net/manual/options #}
<script type="text/javascript">
$(document).ready(function() {
$('#matable').DataTable({
dom: 'ftp',
pageLength: 15,
language: {url: "{% static 'webui/French.json' %}"
}
});
});
</script>
~~~
# Formulaires
## Formulaire de contact
###
* https://docs.djangoproject.com/fr/1.10/topics/class-based-views/generic-editing/
* bouton sur les pages listes des services et des ports
* pouvoir demander la création de service/port aux admins
## Envoi de messages #1
###
* https://docs.djangoproject.com/fr/1.11/topics/email/
### conf/settings.py
~~~{.py .numberLines}
ADMINS = [('John', 'john@example.com'), ]
$ #!! settings.py et db.sqlite3 dans le dépôt !!
$ git clone \
https://gitlab.insa-rouen.fr/bonnegent/vehicules.git
$ cd vehicules
$ git checkout cours_4_debut
~~~
###
* en production, envoi des messages d'erreurs
* différents des Users 'superadmins'
## Envoi de messages #2
### conf/settings\_common.py
~~~{.py .numberLines}
EMAIL_HOST = "127.0.0.1"
EMAIL_PORT = 2525
~~~
### un faux serveur smtp
~~~
$ ./manage.py help mail_debug
$ ./manage.py mail_debug --use-settings
~~~
###
* à quoi sert SERVER\_EMAIL ?
# À faire
## Véhicules
* création
* lecture
* modification
* suppression
No preview for this file type
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment