From 5a027cba52beccb5ad745bfa5f3c17fba703de69 Mon Sep 17 00:00:00 2001 From: Fred Date: Mon, 17 Feb 2020 20:45:39 +0100 Subject: [PATCH] rst - adoc --- .../diag-9ca0787305b4c33019ebc11adc951857.png | Bin 0 -> 9724 bytes .../diag-9ca0787305b4c33019ebc11adc951857.png | Bin 0 -> 9724 bytes source/django/mvc.adoc | 4 +- source/django/mvc/layout.adoc | 249 +- source/django/mvc/templates.adoc | 193 +- source/django/mvc/urls.adoc | 57 +- source/django/mvc/views.adoc | 195 +- source/gwift/key-points.adoc | 138 +- source/gwift/metamodel.adoc | 10 +- source/gwift/refactoring.adoc | 219 +- source/gwift/specs.adoc | 138 +- source/gwift/tests.adoc | 231 +- source/main.adoc | 2 +- source/main.html | 2323 ++++++++++------- source/toolchain/summary.adoc | 13 +- 15 files changed, 2011 insertions(+), 1761 deletions(-) create mode 100644 adoc/diag-9ca0787305b4c33019ebc11adc951857.png create mode 100644 source/diag-9ca0787305b4c33019ebc11adc951857.png diff --git a/adoc/diag-9ca0787305b4c33019ebc11adc951857.png b/adoc/diag-9ca0787305b4c33019ebc11adc951857.png new file mode 100644 index 0000000000000000000000000000000000000000..0336c4c42f46dd85dc7adeb0bf93d835db328d19 GIT binary patch literal 9724 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. Nous placerons une barre de navigation principale, la possibilité de se connecter pour l'utilisateur et définirons quelques emplacements à utiliser par la suite. Reprenez votre fichier `base.html` et modifiez le comme ceci: -Pour que nos pages soient un peu plus *eye-candy* que ce qu'on a présenté ci-dessus, nous allons modifié notre squelette pour qu'il se base sur `Bootstrap `_. Nous placerons une barre de navigation principale, la possibilité de se connecter pour l'utilisateur et définirons quelques emplacements à utiliser par la suite. Reprenez votre fichier ``base.html`` et modifiez le comme ceci: +[source,html] +---- -.. code-block:: html +{% load staticfiles %} - {% load staticfiles %} + + + - - - + + + + + + + + + + + Gwift + - - - - - - - - - - - Gwift - + - - - - + + + +
+
+
+ {% block content %}{% endblock %}
- - - -
- {% include "_footer.html" %} -
- - - +
+ + + +
+ {% include "_footer.html" %} +
+ + + +---- Quelques remarques: - * La première ligne du fichier inclut le *tag* ``{% load staticfiles %}``. On y reviendra par la suite, mais en gros, cela permet de faciliter la gestion des fichiers statiques, notamment en les appelent grâce à la commande ``{% static 'img/header.png' %}`` ou ``{% static 'css/app_style.css' %}``. - * La balise ```` est bourée d'appel vers des ressources stockées sur des :abbr:`CDN (Content Delivery Networks)`. - * Les balises ``{% block content %} {% endblock %}`` permettent de faire hériter du contenu depuis une autre page. On l'utilise notamment dans notre page ``templates/wish/list.html``. - * Pour l'entête et le bas de page, on fait appel aux balises ``{% include 'nom_du_fichier.html' %}``: ces fichiers sont des fichiers physiques, placés sur le filesystem, juste à côté du fichier ``base.html``. De façon bête et méchante, cela inclut juste du contenu HTML. Le contenu des fichiers ``_menu_items.html`` et ``_footer.html`` est copié ci-dessous. +* La première ligne du fichier inclut le *tag* `{% load staticfiles %}`. On y reviendra par la suite, mais en gros, cela permet de faciliter la gestion des fichiers statiques, notamment en les appelent grâce à la commande `{% static 'img/header.png' %}` ou `{% static 'css/app_style.css' %}`. +* La balise `` est bourée d'appel vers des ressources stockées sur des :abbr:`CDN (Content Delivery Networks)`. +* Les balises `{% block content %} {% endblock %}` permettent de faire hériter du contenu depuis une autre page. On l'utilise notamment dans notre page `templates/wish/list.html`. +* Pour l'entête et le bas de page, on fait appel aux balises `{% include 'nom_du_fichier.html' %}`: ces fichiers sont des fichiers physiques, placés sur le filesystem, juste à côté du fichier `base.html`. De façon bête et méchante, cela inclut juste du contenu HTML. Le contenu des fichiers `_menu_items.html` et `_footer.html` est copié ci-dessous. -.. code-block:: html +[source,html] +---- + - - - {% extends "base.html" %} +{% extends "base.html" %} - {% block content %} -

Mes listes de souhaits

-
    - {% for wishlist in wishlists %} -
  • {{ wishlist.name }}: {{ wishlist.description }}
  • - {% endfor %} -
- {% endblock %} - - - -.. code-block:: html - - - -