linuxtarn.org

Association Tarnaise des Utilisateurs de GNU/LINUX et de Logiciels libres
Contact Calendier Messages diffusés
Visioconférence
  • Raspberry Nano-ordinateur aux applications multiples

    Programmation Evénement: Journée du numérique Carmaux 2025
    louis [Administrateurs] 5 mars 2025 10:05

    Animations Linux Tarn dans le cadre de la journée numérique à Carmaux

    samedi 22 mars prochain de 14h à 18h à la médiathèque

    Pour un meilleur accueil , vous pouvez demander des précisons ou indiquer une heure de passage en cliquant sur Contact

    • cochez Contact pour la journée du numérique de Carmaux 
    • posez vos questions ou demandez des précisions , indiquez éventuellment votre horaire de passage .

    LibreOffice est une suite bureautique libre et gratuite, alternative à Microsoft Office. Elle permet de créer, éditer et gérer des documents avec plusieurs applications intégrées

    retour vers la journée  du numérique

    Le Raspberry Pi : Un Nano ou Mini-Ordinateur aux Possibilités Infinies

     Qu’est-ce que le Raspberry Pi ?

    Le Raspberry Pi est un mini-ordinateur de la taille d’une carte de crédit, conçu pour être économique, éducatif et polyvalent. Il fonctionne sous Linux et peut remplacer un PC, contrôler des objets connectés ou apprendre à programmer.

    Pourquoi est-il intéressant ?

    Prix abordable → Un ordinateur pour quelques dizaines d’euros.
    Économie d’énergie → Très peu gourmand en électricité.
    Facile à utiliser → Branchez un écran, un clavier et c’est parti !
    Idéal pour apprendre → Programmation (Python, Scratch), électronique, Linux…
    Polyvalent → Informatique embarquée, robotique, domotique, multimédia, serveurs…

    Exemples d’usages concrets

    En famille : Transformer une télé en smart TV avec Kodi.
    Pour les geeks : Recréer une console rétro avec RetroPie.
    En domotique : Automatiser sa maison avec Home Assistant.
    En robotique : Construire un robot ou une station météo.
    En éducation : Apprendre la programmation et l’électronique.

    Beaucoup d'applications ont été développées par LinuxEdu avec cet appareil :

    --> Streaming d'une caméra pour observer un animal (démonstration lors de la journée du numérique)
    --> Serveur local de données (Gestion des stocks et des ventes de la boutique de la Croix-Rouge de Carmaux)
    --> Home assistant

  • Dessin (GIMP et Inkscape)

    Logiciels de dessin Evénement: Journée du numérique Carmaux 2025
    louis [Administrateurs] 5 mars 2025 10:08

    Animations Linux Tarn dans le cadre de la journée numérique à Carmaux

    samedi 22 mars prochain de 14h à 18h à la médiathèque

    Pour un meilleur accueil , vous pouvez demander des précisons ou indiquer une heure de passage en cliquant sur Contact

    • cochez Contact pour la journée du numérique de Carmaux 
    • posez vos questions ou demandez des précisions , indiquez éventuellment votre horaire de passage .

    GIMP et Inkscape sont des logiciels de dessin complémentaire. GIMP permet de modifier des photos ou dessins équivalents (similaire à Photoshop) et Inscape permet de créer des dessins "au trait" c'est à dire vectorisés

    retour vers la journée  du numérique

     

    GIMP (GNU Image Manipulation Program) est un logiciel libre et gratuit de retouche, de création et de manipulation d’images. Il est souvent comparé à Adobe Photoshop car il offre des outils avancés pour :

    • La retouche photo (correction des couleurs, suppression d’éléments, amélioration des contrastes…)
    • Le dessin numérique (brosses personnalisables, calques, filtres…)
    • Le photomontage (superposition d’images, masques de fusion…)
    • La création graphique (logos, affiches, icônes…)
    • L’animation GIF grâce à l’extension GAP

    Ses avantages par rapport aux autres logiciels :

    Gratuit et Open Source → Contrairement à Photoshop, il est entièrement libre, sans abonnement.
    Léger et performant → Fonctionne sur des configurations modestes (Windows, Mac, Linux).
    Extensible → De nombreux plugins et scripts personnalisables (Python, Scheme).
    Compatible avec Photoshop → Il peut ouvrir et éditer des fichiers .PSD.
    Personnalisable → Interface modifiable selon les besoins (mode fenêtre unique ou multiples).

    Limites ? ll peut être un peu moins intuitif que Photoshop pour les débutants, mais c'est une excellente et puissante alternative pour tout travail graphique !

     

    Inkscape est un logiciel libre et gratuit de dessin vectoriel, utilisé pour créer et éditer des images en SVG (Scalable Vector Graphics). Contrairement aux images en pixels (comme dans GIMP ou Photoshop), les images vectorielles peuvent être agrandies à l’infini sans perte de qualité.
    Création de logos et icônes
    Illustrations et dessins techniques
    Schémas et infographies
    Typographie et lettrage
    Découpe laser et CNC (grâce à l’exportation en formats compatibles)


    Avantages d’Inkscape par rapport aux autres logiciels (comme Adobe Illustrator) :

    Gratuit et Open Source → Pas d’abonnement, accessible à tous.
    Compatible avec le format SVG → Standard du web et largement utilisé.
    Supporte de nombreux formats → PDF, EPS, AI (Illustrator), DXF…
    Extensible avec des extensions → Possibilité d’ajouter des outils spécifiques (tracé CNC, effets spéciaux…).
    Outils avancés de dessin → Gestion précise des nœuds, des calques, des dégradés, et des effets de chemin.
    Léger et multi-plateforme → Fonctionne sur Windows, Mac et Linux, sans nécessiter une machine puissante.

    Limites ? Il est parfois moins optimisé pour le travail d’équipe et l’impression professionnelle que des logiciels payants comme Illustrator, mais il reste une excellente alternative pour le graphisme vectoriel !

  • Journée du numérique à Carmaux (2025)

    Des outils numériques dans notre quotidien Evénement: Journée du numérique et de la lecture
    yves [Administrateurs] 5 mars 2025 10:04

    Animations Linux Tarn dans le cadre de la journée numérique à Carmaux

    samedi 22 mars prochain de 14h à 18h à la médiathèque

    Pour un meilleur accueil , vous pouvez demander des précisons ou indiquer une heure de passage en cliquant sur Contact

    • cochez Contact pour la journée du numérique de Carmaux 
    • posez vos questions ou demandez des précisions , indiquez éventuellment votre horaire de passage .

    Liste des ateliers proposés

     

    • Bureautique (libreoffice Traitement de texte, tableur, présentations,....)

    • Dessin (GIMP et Inkscape)   --> Comment faire une brochure ?

    • Vidéo : les outils de montage kdenlive et Openshot, le streaming avec OBS Studio, le dessin animé avec Blender.

    • Création des objets 3D avec le logiciel de conception assisté par ordinateur Freecad (ou Openscad) jusqu’à la fabrication additive (imprimante 3D) ou soustractive (CMC).

    • Matériel : le Raspberry , un petit ordinateur aux applications multiples

    --> Streaming d'une caméra pour observer un animal
    --> Serveur local de données
    --> Home assistant
    • Atelier Programmation : 

      Initiation ludique à la programmation python-micropython

      (support de développement : ESP8266 en micropython.)

      Quelques méthodes pour initier les néophytes à la programmation !  Plus de détails  ici

  • Procès verbal du 15/06/2017

    PROCES VERBAL DE L’ASSEMBLEE ORDINAIRE DE L’ASSOCIATION Evénement: Assemblée ordinaire du 15/06/2017
    blog [Contributeur] 29 juin 2023 09:38

    pluviomètre fête de la science raspberry python

  • Atelier programmation

    yves [Administrateurs] 27 février 2025 16:13

    Animations Linux Tarn dans le cadre de la journée numérique à Carmaux

    samedi 22 mars prochain de 14h à 18h à la médiathèque de Carmaux

    Pour un meilleur accueil , vous pouvez demander des précisons ou vous positionner sur un créneau horaire cliquant sur contact et cocher demandes diverses, indiquer dans le contenu du message votre horaire de passage et posez vos questions

    retour vers la journée  du numérique

     

    Atelier programmation , pour bien débuter

    Venez vous initier à la programmation dans l'univers GNU/Linux (débutants acceptés tous âges).

    Approche ludique et innovante, contrôler un processeur  pour piloter une LED RBG, un anneau néopixels

    Atelier programmation : aller un peu plus loin avec les connexions réseau

             if BJ.value() == 0:
            raz()
            L3.value(1)
            L2.value(1)
            http_get('http://192.168.1.25/test?...')

     

    la suite  à venir ...  

     

     

  • Quelques applications Django

    Présentation de quelques applications Django de l'auteur
    denis [Superviseur] 9 octobre 2023 19:26

    Application django CMS visioconférence Blog

    • Applications génériques
      • django-minuteblog
        • un CMS plutôt dédié au programmeur, complètement modulable
        • Facilement adaptable pour des applications plus complexes.
          ex: Ventes en ligne, Cours en ligne, Location-Ventes immobilières, etc...
      • django-videoconferencing
        Initialement développée pour l'association linuxtarn.org voici la version allégée de son application de visioconférence.
        Elle contient néanmoins les fonctionnalités suivantes:
        • Visioconférence
        • Partage d'écran
        • Audioconférence
        • Message vidéo
        • Enregistrement vidéo
        • Discussion ou chat
        • Echange de document
        • Cette version est dite privée, par le fait que les contacts sont créés par un administrateur ou un contributeur (celui-ci dispose de ses propres contacts).
          Il n'y a donc pas d'inscription en ligne..
          Après acceptation, les participants disposent d'un espace sur le serveur pour stocker leur profil. (Un email et éventuellement une photo et un profil couleur)
          Les salons de discussion sont dès lors accessibles directement, ou par un système d'invitation par email entre contacts.
          Des préréglages permettent les audioconférences, les messages vidéo et les communications entre mobiles.
        Cette visioconférence est destinée pricipalement aux associations, petites entreprises, et particuliers soucieux de préserver leur indépendance.
        Les performances de l'application dépendront principalement du réseau (Entre 6 et 10 participants en ADSL en visioconférence pure).
    • Applications en fonctionnement
      • Blog de linuxtarn
        • Montage à partir de django-minuteblog modulé en blog
        • Le site est hébergé chez Tetaneutral à Toulouse
        • Un calendrier à été ajouté
        • Une messagerie de diffusion a été installée.
        • Les messages sont diffusés sur la liste de diffusion de linuxtarn.org.
      • Yoga-Méditation
        • Montage à partir de django-minuteblog modulé en site d'activité professionnel.
        • Il est hébergé chez Contabo GmbH
        • Il est organisé en blog
        • Propose des cours vidéo en ligne
        • Propose des livres, des cds multimedia
      • Visioconférence de linuxtarn.org
        • Montage à partir de django-videoconferencing
        • Le site est hébergé chez Tetaneutral à Toulouse
        • Trois salons ont été installés
          • Le bar de linuxtarn: Discussions diverses, tout sujet, configuré sans enregistrement
          • Dépannage linux: Dépannage en ligne linux et marérie, configuré sans enregistrement
          • Réunion linuxtarn: Réunion du bureau ou membres de l'association, toutes options de configuration
      • SeriousGame ou quizmaster
        En test sur le site public de linuxtarn.org. Il faut donc un mot de passe pour jouer.
        L'application est prévue pour fonctionner en local depuis un raspberry pi3.
        Le raspberry pi3 est à la fois le point d'accès wifi et le serveur de jeu.
        Principe de fonctionnement:
        • Matériels nécessaires:
          • Raspberry pi3 (point d'accès et serveur)
          • PC pour l'adminstrateur
          • PC, portable, mobile, quizbox pour les joueurs
          • La quizbox est une interface de 70mm x 50mm x 30mm composée d'un écran tactile et d'un raspberry pico W.
            Le microcontrôleur est programmé en micro-python.
            A faire.
        • Une URL permet à l'administrateur de gérer les questionnaires et lancer les jeux.
        • Une URL permet l'accès aux joueurs.
        • Les jeux sont anonymes
      • RelayController [en cours de développement]
        • C'est une interface django qui pilote des relais de commande.
        • le nombre de relais dépend du nombre de circuits 74HC595 (8 x n)
        • Une petite électronique est reliée aux gpios d'un raspberry pi 2/3/4
        • Le Raspberry pi est à la fois
          • Un point d'accès
          • Le tableau de bord
          • Le planificateur
          • Le contrôleur
    • Applications en stand-by
      • django-vigiapis
        C'est une application complète de ruches connectées développée pour l'association Rucher école de Réalmont.
        La covid est passé par là et le projet s'est naturellement éteint.
        A ce moment, les matériels étaient en test, et la collecte, le transport, le traitement des données étaient opérationnels.
        Voici le principe reproductible pour des données différentes:
        • Ruches: collecte des données >> Esp32 + LoRa 433 Mz
        • Rucher ou concentrateur: transport des données par SMS >> Esp32 + LoRa 433 Mz + modem SIM808
        • Passerelle SMS: transport mqtt des données sur l'internet >> Raspberry piB + modem usb
        • Serveur Django: Réception des données et traitement à partir d'un tableau de bord
      • VigiCamera
        A la base, c'est une démonstration d'une application de surveillance interactive pour mobiles ou webcams embarquées.
        Permet de suivre et localiser un évènement au déclenchement du mobile ou webcam.
        On utilise le paquet yolo_image_detection d'openCV pour la détection d'objets (chien, chat, arme, etc...)
        Pas besoin d'une grosse puissance de serveur sauf en cas de détection d'objets.
      • CameraMonitor
        C'est un tableau de bord de vidéo surveillance pour webcams, mobiles, ou autres caméras suivant la technologie MQTT.
      • Fail2banMqttPublisher
        C'est un tableau de bord qui affiche les connexions malveillantes d'un serveur en ligne à partir d'une action de fail2ban. (f2b_mqtt_action_publisher.py)
    • Projet en étude
      • django-academia: Cours en ligne avec visioconférence
        • Monté à partir de django-minuteblog modulé en site de cours en ligne et de django-videoconference.
        • Installable sur un serveur public
        • Dockerisé pour une installation sur un Pc ou portable derrière une box ADSL ou Fibre
  • Comment déployer un projet Django sur un serveur en production ?

    déploiement de Django pour les serveurs et applications Web en python
    denis [Superviseur] 17 octobre 2023 08:45

    WSGI ASGI supervisor nginx daphne gunicorn

    Le déploiement de Django pour les serveurs et applications Web en python:
    • WSGI (Web Server Gateway Interface) application synchrone
      On utilisera alors le paquet gunicorn
    • ASGI (Asynchronous Server Gateway Interface) application asynchrone et synchrone
      On utilisera le paquet daphne
    Dans les 2 cas on utilise supervisor pour lancer le serveur et nginx comme reverse proxy. Dans tous les cas, préparer le serveur (dédié ou VPS).
    Un domaine devra pointer l'adresse publique du serveur ex: shop.domain.com. On accède au serveur par ssh.
    Voici la liste non exhaustive des tâches sur un serveur debian:
    • Le minimum pour compiler et installer des libraries python et outils système
      #> apt -y install build-essential git wget curl unzip python3-venv python3-pip
      #> apt -y install libz-dev libjpeg-dev libfreetype6-dev python-dev
      #> apt -y install supervisor nginx redis openssl libnss3-tools ssl-cert
      #> apt -y install certbot python3-certbot-nginx
      #> apt -y install iptables fail2ban
      #> apt -y install sqlite3
                  
    • On génère la clef dhparam pour compléter la certification
      #> openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
                  
    • Créer un utilisateur shop par ex:
      #> adduser shop
      #> adduser shop www-data (ajouter shop au groupe de nginx)
                  
      Copier par ftp ou git le projet derrière /home/shop
    • On se logue en tant que shop
      #> su - shop
                  
      On se retrouve donc en donc /home/shop
      • Comme en mode développement on installe l'environnement python
        (.venv) $> pip install django gunicorn
      • On modifie le settings.py
        DEGUG = False
        ALLOWED_HOSTS = ['127.0.0.1', 'shop.domain.com']
      • Faire la migration pour créer la base de donées (sqlite3 par défaut):
        (.venv) $> python manage.py migrate
      • Créer le super utilisateur pour l'administration du back end:
        (.venv) $> python manage.py createsuperuser
      • Générer les fichiers de type static
        (.venv) $> python manage.py collectstatic
      • Tout est prêt pour lancer l'application

    Application synchrone

    • Extrait du fichier de configuration de /etc/supervisor/conf.d/demo.conf:
      [program:shop]
      directory = /home/shop
      command=/home/shop/.venv/bin/gunicorn
              --chdir /home/shop/demo
              --bind 127.0.0.1:8000
              --user shop
              --group www-data
              --log-level error
               demo.wsgi:application
      user=root
      stopasgroup=true
      stopsignal=SIGINT
      autostart=true
      autorestart=true
      redirect_stderr=true
      redirect_stdout=true
                  
    • Configurer l'application dans supervisor
      #> supervisorctl reread
      #> supervisorct update
      	       
    • Lancer ou relancer le serveur
      #> supervisorct restart shop
      	       
    • Extrait du fichier de configuration de /etc/nginx/sites-enabled/demo.conf
      # virtualhost
      server {
          if ($host = shop.domain.com) {
              return 301 https://$host$request_uri;
          }
          listen                  80;
          listen                  [::]:80;
          server_name             shop.domain.comg;
          return                  https://$host$request_uri;
      }
      
      server {
          listen                  443 ssl http2;
          listen                  [::]:443 ssl http2;
          server_name             shop.domain.com;
      
          set $base_path          /home/shop;
          keepalive_timeout       5;
          client_max_body_size    4G;
      
          access_log              /var/log/nginx/shop.domain.com-access.log;
          error_log               /var/log/nginx/shop.domain.com-error.log;
          ssl_certificate         /etc/letsencrypt/live/shop.domain.com/fullchain.pem;
          ssl_certificate_key     /etc/letsencrypt/live/shop.domain.com/privkey.pem;
          ssl_dhparam             /etc/letsencrypt/ssl-dhparams.pem;
          include                 /etc/letsencrypt/options-ssl-nginx.conf;
      
          set $root_path          $base_path/demo;
          root $root_path;
      
          location /static/ {
              alias $root_path/staticfiles/;
          }
      
          location /media/ {
              alias $root_path/media/;
          }
      
          location /favicon.ico {
              alias $root_path/staticfiles/img/logo.png;
          }
      
          location /robots.txt {
              alias $root_path/staticfiles/robots.txt;
          }
      
          location / {
              include proxy_params;
              proxy_redirect off;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              proxy_pass http://127.0.0.1:8000;
          }
      }
      	       
    • Lancer ou relancer le serveur
      #> systemctl restart nginx
                 
    • L'application est maintenant disponible en https://shop.domain.com

    Application asynchrone

    Installer daphne dans l'environnement
    $> pip install django daphne
    Il faudra aussi porter daphne en première position de INSTALLED_APPS dans le settings.py
    INSTALLED_APPS = [
        'daphne',
        ...
        ]
            
    • Extrait du fichier de configuration de /etc/supervisor/conf.d/demo.conf
      [program:demo]
      directory = /home/shop
      command=/home/shop/.venv/bin/daphne
              --bind 127.0.0.1
              --port 8000
              --access-log -
              --proxy-headers
               demo.asgi:application
      user=root
      stopasgroup=true
      stopsignal=SIGINT
      autostart=true
      autorestart=true
      redirect_stderr=true
      redirect_stdout=true
                  
    • Configuration nginx comme synchrone
  • Comment ça fonctionne ?

    Projet et applications organisés suivant une hiérarchie de répertoires et de fichiers
    denis [Superviseur] 7 octobre 2023 19:26

    Environnement développement Projet Application

    Les projets sont organisés suivant une hiérarchie de répertoires et de fichiers organisés en arbre.

    Environnement de développement pour Django

    Il est fortement conseillé d'installer un environnement de programmation python.
    Ce dernier sera lié au projet et pourra être mis à jour facilement sans toucher au système d'exploitation.

    Installation des librairies à partir des dépôts ou des sources

    • De préférence on utilisera le dépôt PyPi (Packages Python).
    • Quand cela est nécessaire, depuis les sources.
    • Dans certain cas, le gestionnaire de package du système d'exploitation.
    • Enfin en combinant 1, 2, 3
    1. Choisir un répertoire pour contenir le projet entier
    2. Installer ensuite un environnement python avec au moins le paquet django

    Projet Django

    Un projet Django est contenu dans un répertoire BASE_DIR qui portera le nom du projet par exemple demo
    Les répertoires des applications qui seront plus tard installées se trouveront à ce niveau.
    Une simple commande permet de générer un squelette composé généralement des fichiers suivants:
    .
    └── demo
        ├── demo
        │   ├── asgi.py
        │   ├── __init__.py
        │   ├── settings.py
        │   ├── urls.py
        │   └── wsgi.py
        └── manage.py
        
    • manage.py: ‣ la boîte à outils de Django
    • Un répertoire demo (nom du projet) est l'application principale composée des fichiers suivants:
      • __init__.py: ‣ marque le répertoire comme un paquet python
      • wsgi.py: ‣ module de l'application en mode wsgi
      • asgi.py: ‣ module de l'application en mode asgi
      • urls.py: ‣ module de routage (liens vers les pages)
      • settings.py: ‣ module de configuration de l'application./ma
      • On placera à ce niveau les répertoires suivants:
        • Répertoire static: ‣ (css, image, icon, javascript, webfont, etc ...)
        • Répertoire templates: ‣ (fichiers de gabari généralement en html)

    Application Django

    Une application de Django s'insère dans le répertoire BASE_DIR demo par exemple boutique.
    Une simple commande permet de générer un squelette composé des fichiers suivants:
    .
    └── demo
        ├── boutique
        │   ├── admin.py
        │   ├── apps.py
        │   ├── __init__.py
        │   ├── migrations
        │   │   └── __init__.py
        │   ├── models.py
        │   ├── tests.py
        │   └── views.py
        ├── demo
        ...
        └── manage.py
        
    • test.py: ‣ module de test
    • apps.py: ‣ module de configuration de l'application
    • admin.py: ‣ module d'administration de la base de données (back end)
    • views.py: ‣ module de traitement des requêtes et des réponses HTTP
    • models.py: ‣ module de gestion la gestion de la base de données
    • On placera à ce niveau, si besoin, les répertoires suivants:
      • Répertoire static: ‣ (css, image, icon, javascript, webfont, etc ...)
      • Répertoire templates: ‣ (fichiers de gabari généralement en html)
    • On placera à ce niveau, en fonction des applications installées les modules:
      • forms.py: ‣ Formulaires de saisie
      • filters.py: ‣ Filtres des requêtes ORM de Django (django-filter)
      • signals.py: ‣ Répartiteur de signaux (récupérer des actions executées ailleurs dans un projet)
      • tasks.py: ‣ Gestionnaire de tâches (django-celery-beat)

    Principes pour développer un projet Django

    1. Créer l'environnement python dans un répertoire:
      $> python -m venv .venv
    2. Démarrer l'environnement python et installer django:
      $> source .venv/bin/python (démarrer l'environnement python)
      (.venv) $> pip install django
    3. Le projet est créé avec la commande suivante:
      (.venv) $> django-admin startproject demo
    4. Faire une première migration pour créer la base de donées (sqlite3 par défaut):
      (.venv) $> cd demo (se placer dans le répertoire projet)
      (.venv) $> python manage.py migrate
    5. Créer le super utilisateur pour l'administration du back end:
      (.venv) $> python manage.py createsuperuser
    6. On peut maintenant lancer le serveur de développement:
      (.venv) $> python manage.py runserver
    7. Tester les adresse suivantes:
      http://127.0.0.1:8000/admin/ (Administration du back end)
      http://127.0.0.1:8000 (Le site front end)
    8. Tout est prêt pour commencer son projet
    Prendre un IDE pour éditer le projet
    Modifier les variables du projet et adapter le settings.py
    1. Par défaut le mode DEBUG = True, on le laisse tel que en mode développement
    2. Ajouter boutique dans la liste des applications installées: INSTALLED_APPS
      INSTALLED_APPS = [
          ...
          'boutique',
      ]
                  
    3. Configurer l'accès à la base de données par défaut c'est sqlite3: DATABASES
    4. Configuration du fuseau horaire: TIME_ZONE
    5. Changer la langue: LANGUAGE_CODE
    6. Paramétrer les fichiers statiques: STATIC_URL et STATICFILES_DIRS
    7. Indiquer les dossiers templates: TEMPLATES
    8. Indiquer les dossiers média: MEDIA_URL et MEDIA_ROOT
    On est prêt pour créer une application et créer une première page
    1. (.venv) $> python manage.py startapp boutique (création de l'application boutique)
    2. Créer une route vers la page home dans demo/url.py:
      from boutique import views
      urlpatterns = [
          ...
          path('', 'views.home', name='home'),
      [
                  
    3. Créer une fonction home dans boutique/views:
      def home(request):
          return render(request, 'boutique/home.html')
                  
    4. Créer la template dans boutique/templates/boutique/home.html:
      (.venv) $> mkdir -p boutique/templates/boutique
      (.venv) $> echo "Bonjour tout le monde" > boutique/templates/boutique/home.html
    5. Le rendu de la page home est alors visible en 127.0.0.1:8000
    Données
    La base de données est générée à partir du module models.py
    • Exemple création de la table articles dans boutique/models.py:
      class Article(models.Model):
          name = models.CharField("Name", max_length=200, null=True, blank=False)
          #description = models.TextField("Description", null=True, blank=True)
              
    • Procéder à la migation à chaque modification ou mise à jour des models.
      (.venv) $> python manage.py makemigrations
      (.venv) $> python manage.py migrate
              
    Administration de la base de données
    • Il suffit d'enregistrer le modèle dans le module boutique/admin.py
      from boutique import models
      admin.site.register(models.Article)
              
    • Le rendu de la page admin est alors visible en 127.0.0.1:8000/admin
    Formulaires de saisie
    Les formulaires de saisie s'insèrent dans le module boutique/forms.py
    from django import forms
    from boutique import models
    
    class ArticleForm(forms.ModelForm):
    
        class Meta:
            model = models.Article
            fields = ['name', 'description', ]
        
    Traitement d'un formulaire
    Le traitement du formulaire se place dans le module boutique/views.py
    On créera sa route dans boutique/urls.py
    • La route:
      urlpatterns = [
          ...
          path('article/', 'views.article', name='article'),
       ]
              
    • La vue:
      ...
      from boutique.forms import ArticleForm
      
      def article(request):
          formulaire = ArticleForm()
          return render(request, 'boutique/article.html', context={'formulaire': ArticleForm()})
              
    • La template dans boutique/article.html
      {{ formulaire.as_p }}
              
    • Le rendu de la page article est alors visible en 127.0.0.1:8000/article/
  • Principe et philosophie

    Django s'inspire du modèle MVC
    denis [Superviseur] 7 octobre 2023 18:58

    models views templates

    Django s'inspire du modèle MVC (disons plutot MVT).
    La structure du framework sépare les données ( models ) qui sont séparées des traitements ( controller ) qui sont eux-mêmes séparés de la vue ( view / template ).

    Architecture MVT, (Model-View-Template)

    • Model: le modèle définit la structure et la gestion de la base de données
      • Django ORM (Object Relational Mapping)
      • Modèles de données définis par des classes Python
    • View: une vue reçoit les requêtes HTTP et renvoie les réponses HTTP.
      • accède aux données requises pour satisfaire les requêtes par une fonction ou classe python via les modèles
      • formate la réponse aux templates ou rendu html
    • Template
      • interface html ou rendu visuel
      • langage de balisage personnel
      • interfaces dynamiques et interactives

    Principe DRY (Don’t Repeat Yourself)

    • environnement de travail propre et gérable
    • un espace unique pour stocker chaque objet distinct
    • supprime les redondances pour se concentrer sur la logique de l'application

    Authentification et sécurité

    • un système d'authentification utilisateur complet et sécurisé
    • comptes d'utilisateurs, groupes d'utilisateurs et sessions
    • un système de sécurité de pointe contre les failles de sécurité courantes

    DRF (Django REST Framework)

    • une boîte à outils de composants pour créer des API RESTFUL
    • Une API est une interface permettant d'interagir avec des bases de données.
    • Les API RESTFUL sont utilisées pour répertorier, modifier, créer et supprimer des données sur des serveurs Web
  • A propos des documents sur Python Django

    Découvrir la plateforme de développement Django
    denis [Superviseur] 7 octobre 2023 18:55

    Python Django

    Il s'adresse à tout développeur d'application Web dont le but est de produire des projets solides rapidement et sans surprise.
    Il n'a pas la prétention de tout expliquer et de tout dire sur la plateforme de développement Django, car le sujet est vaste.
    Il vous fera simplement découvrir cet environnement de programmation qui pourquoi pas, vous donnera l'envie d'aller un peu plus loin.

    Dans tous les cas, veuillez vous référer aux liens suivants indispensables pour démarrer:

  • Qu’est-ce que Django

    infrastructure d'application de développement web écrite en Python
    denis [Superviseur] 7 octobre 2023 18:57

    Django

    • Une infrastructure d'application de développement web écrite en Python (web framework).
    • Regroupe toutes les fonctions nécessaires pour créer une application complète.
    • Application réutilisable, évolutive, extensive et sécurisée.

    Fonctionnalités

    • développement rapide d’applications web complexes.
    • suppression les tâches rébarbatives et répétitives.
    • assure des applications sécurisés et faciles à maintenir.
    • supporte les opérations de caches et de bases de données.
    • couvre à la fois le front end et le back end de l'application.
      • back end: gestion base de données côté serveur (Administration Django ORM).
      • front end: interface utilisateur (html, css, javascript).

    Pour mémoire

  • Qu’est-ce que Python

    Langage le plus populaire et un élément incontournable
    denis [Superviseur] 6 octobre 2023 12:54

    Python Django

    • Python est un langage de programmation interprété (on dit aussi langage script).
    • langage sous une licence libre.
    • fonctionne sur la plupart des plateformes informatiques en particulier sous linux.
    • Python est un élément incontournable de la science des données.
    • langage le plus populaire depuis 09/2022.
    • 1er dans le classement TIOBE
  • Apprendre à programmer avec Python

    denis [Superviseur] 6 octobre 2023 10:02

    programmer python swinnen

    Version libre de l'ouvrage "Apprendre à programmer avec Python" de Gérard Swinnen

Politique des cookies

Ce site nécéssite l'acceptation préalable des cookies en particulier celui qui permettra de mémoriser votre choix.
En accédant à ce site, vous acceptez implicitement l'utilisation des cookies uniquement nécessaires à l'application.

Logiciels libres

Publications

Vers le haut
Linuxtarn: Association tarnaise des utilisateurs de gnu/linux et logiciels libres. Partenaire de Linuxedu

CONTACT

Veillez compléter la fiche ci-dessous:

Votre demande concerne

captcha Je suis un humain en reproduisant les 4 caractères ci-contre.

×

Guide

Développer ou non les infos avec les commandes suivantes
  • Gauche ou droit
  • Clic sur l'icon du titre des articles
  • Devant un titre signale cette action
Autres infos
  • n Indique le nombre d'éléments