Merci de votre -commande
- -Celle-ci sera traitée -dans les meilleurs délais
- -Cordialement,
- - - -Gardez les références de votre commande et n'hésitez pas à -nous contacter si vous avez des questions :
- -tel : 00 00 00 00 00
- -courriel : contact@maboutique.fr
- -Hello World !
- {% endblock %} - -Enfin, on crée l'URL. On veut pouvoir appeler la page depuis https://localhost:8000/hello, le préfixe indiqué précédemment suffit donc. - -.. code-block:: python - - # hello/urls.py - from django.urls import path - from hello.views import HelloView - - urlpatterns = [ - # Le préfixe étant retiré lors du passage du routeur d'URL - # dans le fichier d'URL racine du projet, l'URL à matcher ici est donc vide - path("", HelloView.as_view(), name="hello"), - ] - -Et voilà , c'est fini, il ne reste plus qu'à lancer le serveur et à se rendre sur la page. - -Manipuler les arguments d'URL ------------------------------ - -Dans cette partie, on cherche à détecter les numéros passés dans l'URL pour les passer dans le template. On commence par ajouter cet URL modifiée. - -.. code-block:: python - - # hello/urls.py - from django.urls import path - from hello.views import HelloView - - urlpatterns = [ - path("", HelloView.as_view(), name="hello"), - path("- Hello World ! - {% if hello_id -%} - {{ hello_id }} - {%- endif -%} -
- {% endblock content %} - -.. note:: - - Il est tout à fait possible d'utiliser les arguments GET passés dans l'URL. Dans ce cas, il n'est pas obligatoire de modifier l'URL et il est possible de récupérer l'argument dans le dictionnaire `request.GET`. - -À l'assaut des modèles ----------------------- - -Pour cette dernière partie, nous allons ajouter une entrée dans la base de données et l'afficher dans un template. Nous allons ainsi créer un modèle nommé *Article* qui contiendra une entrée de texte pour le titre et une autre pour le contenu. - -Commençons par le modèle en lui même. - -.. code-block:: python - - # hello/models.py - from django.db import models - - - class Article(models.Model): - - title = models.CharField("titre", max_length=100) - content = models.TextField("contenu") - -Continuons avec une vue qui sera en charge d'afficher l'ensemble des articles présent dans la base. - -.. code-block:: python - - # hello/views.py - - from django.views.generic import ListView - - from hello.models import Article - - ... - - # On hérite de ListView pour avoir plusieurs objets - class ArticlesListView(ListView): - - model = Article # On base la vue sur le modèle Article - template_name = "hello/articles.jinja" - -On n'oublie pas l'URL. - -.. code-block:: python - - from hello.views import HelloView, ArticlesListView - - urlpatterns = [ - ... - path("articles/", ArticlesListView.as_view(), name="articles_list") - ] - -Et enfin le template. - -.. code-block:: html+jinja - - {# hello/templates/hello/articles.jinja #} - {% extends "core/base.jinja" %} - - {% block title %} - Hello World Articles - {% endblock title %} - - {% block content %} - {# Par défaut une liste d'objets venant de ListView s'appelle object_list #} - {% for article in object_list %} -{{ article.content }}
- {% endfor %} - {% endblock content %} - -Maintenant que toute la logique de récupération et d'affichage est terminée, la page est accessible à l'adresse https://localhost:8000/hello/articles. - -Mais, j'ai une erreur ! Il se passe quoi ?! Et bien c'est simple, nous avons créé le modèle mais il n'existe pas dans la base de données. Il est dans un premier temps important de créer un fichier de migrations qui contient des instructions pour la génération de celles-ci. Ce sont les fichiers qui sont enregistrés dans le dossier migration. Pour les générer à partir des classes de modèles qu'on vient de manipuler il suffit d'une seule commande. - -.. code-block:: bash - - ./manage.py makemigrations - -Un fichier *hello/migrations/0001_initial.py* se crée automatiquement, vous pouvez même aller le voir. - -.. note:: - - Il est tout à fait possible de modifier à la main les fichiers de migrations. C'est très intéressant si par exemple il faut appliquer des modifications sur les données d'un modèle existant après cette migration mais c'est bien au delà du sujet de ce tutoriel. Référez vous à la documentation pour ce genre de choses. - -J'ai toujours une erreur ! Mais oui, c'est pas fini, faut pas aller trop vite. Maintenant il faut appliquer les modifications à la base de données. - -.. code-block:: bash - - ./manage.py migrate - -Et voilà , là il n'y a plus d'erreur. Tout fonctionne et on a une superbe page vide puisque aucun contenu pour cette table n'est dans la base. Nous allons en rajouter. Pour cela nous allons utiliser le fichier *core/management/commands/populate.py* qui contient la commande qui initialise les données de la base de données de test. C'est un fichier très important qu'on viendra à modifier assez souvent. Nous allons y ajouter quelques articles. - -.. code-block:: python - - # core/management/commands/populate.py - from hello.models import Article - - ... - - class Command(BaseCommand): - - ... - - def handle(self, *args, **options): - - ... - - # les deux syntaxes ci-dessous sont correctes et donnent le même résultat - Article(title="First hello", content="Bonjour tout le monde").save() - Article.objects.create(title="Tutorial", content="C'était un super tutoriel") - - -On regénère enfin les données de test en lançant la commande que l'on vient de modifier. - -.. code-block:: bash - - ./manage.py setup - -On revient sur https://localhost:8000/hello/articles et cette fois-ci nos deux articles apparaissent correctement. \ No newline at end of file diff --git a/doc/start/install.rst b/doc/start/install.rst deleted file mode 100644 index 257fcf46..00000000 --- a/doc/start/install.rst +++ /dev/null @@ -1,242 +0,0 @@ -Installer le projet -=================== - -Dépendances du système ----------------------- - -Certaines dépendances sont nécessaires niveau système : - -* poetry -* libssl -* libjpeg -* zlib1g-dev -* python -* gettext -* graphviz - -Sur Windows -~~~~~~~~~~~ - -Chers utilisateurs de Windows, quel que soit votre amour de Windows, -de Bill Gates et des bloatwares, je suis désolé -de vous annoncer que, certaines dépendances étant uniquement disponibles sur des sytèmes UNIX, -il n'est pas possible développer le site sur Windows. - -Heureusement, il existe une alternative qui ne requiert pas de désinstaller votre -OS ni de mettre un dual boot sur votre ordinateur : :code:`WSL`. - -- **Prérequis:** vous devez être sur Windows 10 version 2004 ou ultérieure (build 19041 & versions ultérieures) ou Windows 11. -- **Plus d'info:** `docs.microsoft.com