<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Archives des python - La programmation sur le web</title>
	<atom:link href="https://programmation.surleweb-france.fr/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmation.surleweb-france.fr/tag/python/</link>
	<description>La programmation gratuite pour tous</description>
	<lastBuildDate>Tue, 30 May 2023 18:36:54 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/08/cropped-19518430-icone-de-programmation-pour-votre-site-web-mobile-presentation-et-conception-de-logo-gratuit-vectoriel.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Archives des python - La programmation sur le web</title>
	<link>https://programmation.surleweb-france.fr/tag/python/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">176210735</site>	<item>
		<title>Utilisation de Django en Python : Un guide complet pour créer des applications web puissantes</title>
		<link>https://programmation.surleweb-france.fr/utilisation-de-django-en-python-un-guide-complet-pour-creer-des-applications-web-puissantes/</link>
					<comments>https://programmation.surleweb-france.fr/utilisation-de-django-en-python-un-guide-complet-pour-creer-des-applications-web-puissantes/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Thu, 08 Jun 2023 17:01:20 +0000</pubDate>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[autorisation]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[déploiement]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[formulaires]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[modèles de données]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[projet]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rendu]]></category>
		<category><![CDATA[routes]]></category>
		<category><![CDATA[structure]]></category>
		<category><![CDATA[templates]]></category>
		<category><![CDATA[vues]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=1865</guid>

					<description><![CDATA[<p>Cet article explore l'utilisation de Django en Python pour créer des applications web puissantes et maintenables. Tu découvriras comment installer et configurer Django, la gestion des routes et des vues, les modèles de données et l'ORM, les templates, les formulaires, l'authentification et le déploiement d'applications web avec Django</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/utilisation-de-django-en-python-un-guide-complet-pour-creer-des-applications-web-puissantes/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/utilisation-de-django-en-python-un-guide-complet-pour-creer-des-applications-web-puissantes/">Utilisation de Django en Python : Un guide complet pour créer des applications web puissantes</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Introduction :</h2>



<p>Django, un framework web écrit en Python, est largement reconnu pour sa puissance, sa flexibilité et sa capacité à accélérer le développement d&rsquo;applications web. En combinant les atouts de Django avec les fonctionnalités riches de Python, les développeurs peuvent créer des applications web robustes et maintenables. Cet article se propose d&rsquo;explorer en détail l&rsquo;utilisation de Django en Python, en fournissant un guide complet pour tirer parti de ce framework. Nous aborderons l&rsquo;installation et la configuration de Django, la structure d&rsquo;un projet Django, la gestion des routes et des vues, les modèles de données et l&rsquo;ORM, les templates, les formulaires, l&rsquo;authentification et l&rsquo;autorisation, ainsi que le déploiement d&rsquo;une application Django. Prépare-toi à plonger dans le monde puissant de Django et à découvrir comment créer des applications web de qualité avec Python.</p>



<h3 class="wp-block-heading">I. Installation et configuration de Django</h3>



<p>Avant de commencer à utiliser Django, il est essentiel de l&rsquo;installer et de le configurer correctement. Voici les étapes à suivre :</p>



<ul class="wp-block-list">
<li>Installation de Django via pip : </li>
</ul>



<p>Pour installer Django, il est recommandé d&rsquo;utiliser pip, le gestionnaire de packages Python. Ouvre ton terminal et exécute la commande suivante :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">pip install Django</pre>



<p>Assure-toi d&rsquo;avoir une version de Python compatible avec Django (3.6 ou ultérieure).</p>



<ul class="wp-block-list">
<li>Création d&rsquo;un nouveau projet Django : </li>
</ul>



<p>Une fois Django installé, tu peux créer un nouveau projet Django en utilisant la commande suivante dans le terminal :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">django-admin startproject nom_du_projet</pre>



<p>Cela créera un dossier contenant les fichiers de base de ton projet Django.</p>



<ul class="wp-block-list">
<li>Configuration de la base de données : </li>
</ul>



<p>Django prend en charge plusieurs types de bases de données, mais par défaut, il est configuré pour utiliser SQLite, une base de données légère. Si tu souhaites utiliser une autre base de données, comme PostgreSQL ou MySQL, tu devras configurer les paramètres de la base de données dans le fichier <code><strong>settings.py</strong></code> de ton projet Django.</p>



<p>Dans ce fichier, tu trouveras une section appelée <code>DATABASES</code> où tu peux spécifier les informations de connexion à ta base de données choisie.</p>



<p>Par exemple, voici comment configurer Django pour utiliser PostgreSQL :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">DATABASES = { 
     'default': { 
         'ENGINE': 'django.db.backends.postgresql', 
         'NAME': 'nom_de_la_base_de_donnees', 
         'USER': 'utilisateur', 
         'PASSWORD': 'mot_de_passe', 
         'HOST': 'localhost', 
         'PORT': '', 
    } </pre>



<p>Assure-toi d&rsquo;installer les pilotes appropriés pour ta base de données choisie.</p>



<p>Une fois ces étapes terminées, tu es prêt à passer à la création de ton premier projet Django. Django fournit une structure claire et organisée pour développer des applications web, ce qui facilite la gestion de ton code et de tes ressources. Dans le prochain chapitre, nous explorerons la structure d&rsquo;un projet Django et ses principaux fichiers et dossiers.</p>



<h2 class="wp-block-heading"><br>II. Structure d&rsquo;un projet Django</h2>



<p>Lorsque tu crées un projet Django, il suit une structure bien définie qui facilite l&rsquo;organisation de ton code et de tes ressources. Comprendre cette structure est essentiel pour développer des applications Django de manière efficace. Voici un aperçu des principaux fichiers et dossiers dans un projet Django :</p>



<ol class="wp-block-list">
<li>Dossier racine : Le dossier racine de ton projet Django contient les fichiers de configuration principaux et d&rsquo;autres dossiers importants. Voici quelques fichiers clés que tu rencontreras :
<ul class="wp-block-list">
<li><code><strong>manage.py</strong></code> : C&rsquo;est un script qui agit comme un point d&rsquo;entrée pour diverses commandes de gestion du projet. Tu peux l&rsquo;utiliser pour exécuter le serveur de développement, appliquer des migrations, créer des super-utilisateurs, etc.</li>



<li><code><strong>settings.py</strong></code> : Ce fichier contient la configuration principale de ton projet Django. Tu y trouveras des informations sur la base de données, les applications installées, les paramètres de sécurité, les URL, etc.</li>



<li><code><strong>urls.py</strong></code> : Ce fichier définit les routes (URL) de ton application. Il mappe les URL aux vues correspondantes qui seront exécutées lorsqu&rsquo;une requête est effectuée.</li>
</ul>
</li>



<li>Dossiers d&rsquo;applications : Django encourage une approche modulaire en organisant le code en applications. Une application est une partie spécifique de ton projet avec sa propre logique et ses propres fonctionnalités. Voici quelques dossiers importants à l&rsquo;intérieur d&rsquo;une application :
<ul class="wp-block-list">
<li><strong><code>models.py</code> </strong>: Ce fichier définit les modèles de données, qui représentent la structure des tables de la base de données. Les modèles Django utilisent une syntaxe de classe pour définir les champs et les relations entre les objets.</li>



<li><code><strong>views.py</strong></code> : Ce fichier contient les vues, qui sont des fonctions ou des classes responsables du traitement des requêtes HTTP et de la génération des réponses. Les vues définissent la logique métier de ton application.</li>



<li><code><strong>templates/</strong></code> : Ce dossier contient les fichiers de templates utilisés pour générer les pages web. Les templates sont des fichiers HTML avec des balises spéciales qui permettent l&rsquo;insertion de données dynamiques.</li>



<li><strong><code>forms.py</code> </strong>: Ce fichier est utilisé pour définir les formulaires, qui facilitent la saisie et la validation des données côté client. Les formulaires Django offrent des fonctionnalités intégrées pour gérer les champs, les validations et les messages d&rsquo;erreur.</li>
</ul>
</li>



<li>Autres dossiers et fichiers : Outre les fichiers et dossiers mentionnés ci-dessus, tu rencontreras également d&rsquo;autres éléments tels que les fichiers statiques <strong>(<code>static/</code>)</strong>, les fichiers de médias (<code><strong>media/</strong></code>), les fichiers de migrations (<code><strong>migrations/</strong></code>), etc.
<ul class="wp-block-list">
<li><strong><code>static/</code> :</strong> Ce dossier est utilisé pour stocker les fichiers statiques tels que les fichiers CSS, JavaScript, images, etc., utilisés par ton application.</li>



<li><code><strong>media/</strong></code> : Ce dossier est destiné à stocker les fichiers téléchargés par les utilisateurs, tels que les images téléchargées.</li>



<li><code><strong>migrations/</strong></code> : Ce dossier contient les fichiers de migration qui décrivent les modifications de structure de la base de données au fil du temps. Les migrations permettent de garder la base de données synchronisée avec les changements de modèle.</li>
</ul>
</li>
</ol>



<p>En comprenant cette structure de base d&rsquo;un projet Django, tu seras en mesure de naviguer et d&rsquo;organiser ton code de manière efficace. Dans le prochain chapitre, nous explorerons la gestion des routes et des vues dans Django, qui permettent de diriger les utilisateurs vers les bonnes pages et de traiter leurs actions.</p>



<h2 class="wp-block-heading">III. Gestion des routes et des vues</h2>



<p>Dans Django, la gestion des routes (URLs) et des vues constitue un élément clé du développement d&rsquo;applications web. Les routes définissent les URL auxquelles les utilisateurs accèdent, tandis que les vues déterminent comment ces URL sont traitées et quelles réponses sont renvoyées. Voici comment gérer les routes et les vues dans Django :</p>



<ul class="wp-block-list">
<li>Définition des URLs dans <code>urls.py</code> : </li>
</ul>



<p>Le fichier <code><strong>urls.py</strong></code> de ton projet Django est responsable de la configuration des routes. Voici comment définir une route de base :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.urls import path 
from . import views 

urlpatterns = [ path('', views.accueil, name='accueil'), 
    path('contact/', 
    views. Contact, 
    name='contact'), 
    # Autres routes... 
]</pre>



<p>Dans cet exemple, nous importons les fonctions <code>path</code> et les vues de notre application. Ensuite, nous définissons les routes en utilisant la fonction <code>path</code>. La première route correspond à la page d&rsquo;accueil, qui appelle la vue <code>accueil</code>. La deuxième route correspond à la page de contact, qui appelle la vue <code>contact</code>.</p>



<ul class="wp-block-list">
<li>Définition des vues dans<strong> <code>views.py</code></strong> :</li>
</ul>



<p> Les vues sont des fonctions ou des classes qui définissent la logique métier pour chaque URL. Voici un exemple de vue simple :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.shortcuts import render 

def accueil(request): 
    return render(request, 'accueil.html')</pre>



<p>Dans cet exemple, nous importons la fonction <code>render</code> qui est utilisée pour générer la réponse HTTP. La vue <code>accueil</code> prend un objet <code>request</code> en paramètre et renvoie la réponse en rendant le template <code><strong>accueil.html</strong></code>.</p>



<ul class="wp-block-list">
<li>Passage de paramètres aux vues : </li>
</ul>



<p>Les vues peuvent également accepter des paramètres provenant des URLs. Par exemple, si tu souhaites afficher des détails spécifiques d&rsquo;un article en fonction de son identifiant, tu peux définir une route avec un paramètre :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">path('article/&amp;lt;int:article_id>/', views.detail_article, name='detail_article')</pre>



<p>Dans ce cas, l&rsquo;identifiant de l&rsquo;article est capturé dans la variable <strong><code>article_id</code> </strong>et est transmis à la vue <code><strong>detail_article</strong></code>.</p>



<ul class="wp-block-list">
<li>Gestion des réponses HTTP : </li>
</ul>



<p>Les vues sont responsables de renvoyer les réponses HTTP appropriées. Tu peux renvoyer du contenu HTML, des redirections, des réponses JSON, etc. Voici quelques exemples :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.http import HttpResponse, HttpResponseRedirect, JsonResponse 

def accueil(request): 
    return HttpResponse("Bienvenue sur la page d'accueil.") 
def contact(request): 
    return HttpResponseRedirect('/contactez-nous/') 
def api_data(request): 
    data = {'message': 'Hello, World!'} 
    return JsonResponse(data)</pre>



<p>Dans ces exemples, nous utilisons respectivement <code>HttpResponse</code> pour renvoyer du contenu HTML brut, <code><strong>HttpResponseRedirect</strong></code> pour effectuer une redirection vers une autre URL, et <strong><code>JsonResponse</code> </strong>pour renvoyer une réponse JSON.</p>



<p>En utilisant la gestion des routes et des vues dans Django, tu peux créer des chemins clairs pour naviguer dans ton application et traiter les actions des utilisateurs. Dans le prochain chapitre, nous explorerons les modèles de données et l&rsquo;ORM (Object-Relational Mapping) de Django, qui permettent de manipuler facilement la base de données.</p>



<h2 class="wp-block-heading">IV. Modèles de données et ORM</h2>



<p>Les modèles de données jouent un rôle central dans les applications Django, car ils définissent la structure des tables de la base de données. Django propose un ORM (Object-Relational Mapping) puissant qui facilite la manipulation des données et les opérations sur la base de données. Voici comment travailler avec les modèles de données et l&rsquo;ORM de Django :</p>



<ul class="wp-block-list">
<li>Définition des modèles de données : </li>
</ul>



<p>Les modèles de données sont définis en utilisant des classes dans Django. Chaque classe représente une table de la base de données et chaque attribut de classe correspond à un champ dans la table. Voici un exemple de modèle de données simple :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.db import models 
class Article(models.Model): 
    titre = models.CharField(max_length=200) 
    contenu = models.TextField() 
    date_creation = models.DateTimeField(auto_now_add=True) 
    def __str__(self): 
        return self.titre </pre>



<p>Dans cet exemple, nous définissons un modèle <strong><code>Article</code> </strong>avec trois champs : <strong><code>titre</code> </strong>(un champ de texte court), <code>contenu</code> (un champ de texte long) et <strong><code>date_creation</code> </strong>(un champ de date et heure avec la valeur par défaut définie lors de la création de l&rsquo;objet).</p>



<h3 class="wp-block-heading">Interagir avec la base de données : </h3>



<p>Une fois que les modèles de données sont définis, Django fournit un ensemble d&rsquo;opérations pour interagir avec la base de données. Voici quelques exemples courants :</p>



<ul class="wp-block-list">
<li>Enregistrement d&rsquo;un nouvel objet dans la base de données :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">nouvel_article = Article(titre='Mon article', contenu='Contenu de mon article') 
nouvel_article.save()</pre>



<ul class="wp-block-list">
<li>Récupération des objets de la base de données :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">articles = Article.objects.all()</pre>



<p>Cette requête récupère tous les objets de type <code>Article</code> présents dans la base de données.</p>



<ul class="wp-block-list">
<li>Filtres et requêtes plus complexes :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">articles_recent = Article.objects.filter(date_creation__year=2023) </pre>



<h3 class="wp-block-heading">Cette requête filtre les articles créés en 2023.</h3>



<ul class="wp-block-list">
<li>Relations entre les modèles : </li>
</ul>



<p>Les modèles de Django peuvent également être liés les uns aux autres pour représenter des relations. Voici un exemple de relation de clé étrangère :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class Commentaire(models.Model): 
    contenu = models.TextField() 
    article = models.ForeignKey(Article, on_delete=models.CASCADE)</pre>



<p>Dans cet exemple, le modèle <strong><code>Commentaire</code> </strong>est lié au modèle <strong><code>Article</code> </strong>via une clé étrangère. Cela signifie qu&rsquo;un commentaire est associé à un article spécifique.</p>



<p>L&rsquo;ORM de Django simplifie grandement les opérations de base de données en offrant une interface de haut niveau. Tu peux effectuer des requêtes complexes, trier les résultats, effectuer des jointures, etc., sans avoir à écrire de SQL brut.</p>



<p>Dans le prochain chapitre, nous explorerons l&rsquo;utilisation des templates Django pour générer des pages web dynamiques à partir des données de nos vues.</p>



<h2 class="wp-block-heading">V. Templates et rendu des vues</h2>



<p>Les templates constituent une partie essentielle du développement d&rsquo;applications web Django. Ils permettent de générer des pages web dynamiques en combinant du code HTML avec des données provenant des vues. Django offre un moteur de templates puissant qui facilite la création de pages web flexibles et réutilisables. Voici comment travailler avec les templates dans Django :</p>



<h3 class="wp-block-heading">Création de fichiers de templates : </h3>



<p>Les fichiers de templates contiennent le code HTML qui sera rendu par Django. Ils sont généralement stockés dans le dossier <code>templates/</code> de ton application. Voici un exemple de fichier de template simple, nommé <code>accueil.html</code> :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;h1>Bienvenue sur la page d'accueil&lt;/h1> 
&lt;p>Voici un article récent :&lt;/p> 
&lt;h2>{{ article.titre }}&lt;/h2> 
&lt;p>{{ article.contenu }}&lt;/p></pre>



<p>Dans ce template, nous utilisons des balises <code><strong>{{ }}</strong></code> pour insérer des variables provenant des vues.</p>



<h3 class="wp-block-heading">Passage de données aux templates : </h3>



<p>Les vues sont responsables de fournir les données aux templates. Voici comment passer des données à un template lors du rendu :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.shortcuts import render 
from .models import Article 
def accueil(request): 
     article = Article.objects.latest('date_creation') 
     context = {'article': article} 
     return render(request, 'accueil.html', context)</pre>



<p>Dans cette vue, nous récupérons le dernier article de la base de données et le passons au template en utilisant le dictionnaire <code><strong>context</strong></code>. Les clés du dictionnaire correspondent aux variables utilisées dans le template.</p>



<h3 class="wp-block-heading">Utilisation de la syntaxe des templates : </h3>



<p>Les templates Django utilisent une syntaxe spéciale qui permet d&rsquo;insérer des variables, des boucles, des conditions, etc. Voici quelques exemples :<ul><li>Affichage des variables :</li></ul></p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;h2>{{ article.titre }}&lt;/h2> 
&lt;p>{{ article.contenu }}&lt;/p></pre>



<p>Utilisation de boucles </p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{% for article in articles %} 
    &lt;h2>{{ article.titre }}&lt;/h2> 
    &lt;p>{{ article.contenu }}&lt;/p> 
{% endfor %}</pre>



<p>Utilisation de conditions :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{% if article.date_creation.year == 2023 %} 
    &lt;p>Cet article a été créé en 2023.&lt;/p> 
{% else %} 
     &lt;p>Cet article a été créé avant 2023.&lt;/p> 
{% endif %}</pre>



<p>La syntaxe des templates offre une grande flexibilité pour manipuler les données et générer des pages web dynamiques.</p>



<p>En utilisant les templates Django, tu peux créer des pages web flexibles et réutilisables en combinant du code HTML avec des données provenant des vues. Dans le prochain chapitre, nous aborderons la gestion des formulaires dans Django, ce qui te permettra de collecter et de valider les données soumises par les utilisateurs.</p>



<h2 class="wp-block-heading"><br>VII. Authentification et autorisation</h2>



<p>L&rsquo;authentification et l&rsquo;autorisation sont des aspects cruciaux de nombreuses applications web. Django fournit des fonctionnalités intégrées pour gérer ces processus de manière sécurisée et conviviale. Dans ce chapitre, nous explorerons comment mettre en place un système d&rsquo;authentification utilisateur et gérer les autorisations dans une application Django :</p>



<h3 class="wp-block-heading">Mise en place de l&rsquo;authentification utilisateur : </h3>



<p>Django propose un système d&rsquo;authentification utilisateur complet qui inclut des fonctionnalités telles que l&rsquo;inscription, la connexion, la déconnexion et la gestion des mots de passe. Voici comment configurer l&rsquo;authentification utilisateur :</p>



<ul class="wp-block-list">
<li>Activer l&rsquo;authentification dans <code><strong>settings.py</strong></code> : </li>
</ul>



<p>Dans le fichier<strong> <code>settings.py</code></strong> de ton projet, assure-toi que la variable <code>AUTHENTICATION_BACKENDS</code> inclut la configuration suivante :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">AUTHENTICATION_BACKENDS = [ 
    'django.contrib.auth.backends.ModelBackend', 
]</pre>



<ul class="wp-block-list">
<li>Gérer les vues d&rsquo;authentification : </li>
</ul>



<p>Dans tes vues, tu peux utiliser les vues prédéfinies de Django pour gérer l&rsquo;inscription, la connexion et la déconnexion des utilisateurs. Par exemple :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.contrib.auth.views import LoginView, LogoutView 

urlpatterns = [ 
    path('connexion/', LoginView.as_view(template_name='connexion.html'), name='connexion'), 
    path('deconnexion/', LogoutView.as_view(), name='deconnexion'), 
]</pre>



<ul class="wp-block-list">
<li>Utiliser les balises de template pour l&rsquo;authentification : </li>
</ul>



<p>Dans les templates, tu peux utiliser les balises de template de Django pour afficher le contenu en fonction de l&rsquo;état de l&rsquo;authentification de l&rsquo;utilisateur. Par exemple :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{% if user.is_authenticated %} 
    &lt;p>Bienvenue, {{ user.username }}&lt;/p> 
{% else %} 
    &lt;p>Veuillez vous connecter pour accéder au contenu.&lt;/p> 
{% endif %}</pre>



<h3 class="wp-block-heading">Gestion des autorisations : </h3>



<p>Django offre également des mécanismes intégrés pour gérer les autorisations des utilisateurs. Tu peux définir des rôles et des permissions pour contrôler l&rsquo;accès à certaines parties de ton application. Voici comment gérer les autorisations :</p>



<ul class="wp-block-list">
<li>Définir des groupes et des permissions : </li>
</ul>



<p>Dans l&rsquo;administration Django, tu peux créer des groupes et définir des permissions spécifiques pour chaque groupe. Par exemple, tu peux créer un groupe « Utilisateurs » avec des permissions limitées et un groupe « Administrateurs » avec des permissions étendues.</p>



<ul class="wp-block-list">
<li>Utiliser les décorateurs de vues : </li>
</ul>



<p>Django propose des décorateurs de vues qui permettent de restreindre l&rsquo;accès à certaines vues en fonction des autorisations. Par exemple :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.contrib.auth.decorators import login_required, permission_required 

@login_required 
def profil(request): 
    # Vue accessible uniquement pour les utilisateurs connectés 
    pass 

@permission_required('nom_permission') 
def modifier_article(request): 
    # Vue accessible uniquement aux utilisateurs ayant la permission spécifiée 
    pass</pre>



<ul class="wp-block-list">
<li>Contrôle d&rsquo;accès dans les templates : </li>
</ul>



<p>Dans les templates, tu peux utiliser les balises de contrôle d&rsquo;accès de Django pour afficher ou masquer du contenu en fonction des autorisations. Par exemple :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{% if perms.app_label.permission_name %} 
    &lt;p>Contenu accessible uniquement avec la permission spécifiée.&lt;/p> 
{% endif %}</pre>



<p>En utilisant l&rsquo;authentification et l&rsquo;autorisation dans Django, tu peux sécuriser ton application et contrôler l&rsquo;accès aux fonctionnalités en fonction des utilisateurs et de leurs autorisations. Dans le prochain chapitre, nous aborderons le déploiement d&rsquo;une application Django, ce qui te permettra de mettre ton application en production pour qu&rsquo;elle soit accessible en ligne.</p>



<h2 class="wp-block-heading">VIII. Déploiement d&rsquo;une application Django</h2>



<p>Une fois que ton application Django est prête, tu souhaiteras la déployer pour qu&rsquo;elle soit accessible en ligne. Django offre plusieurs options pour le déploiement, allant des serveurs WSGI traditionnels aux services cloud. Dans ce chapitre, nous explorerons les étapes nécessaires pour déployer une application Django :</p>



<ol class="wp-block-list">
<li>Choix d&rsquo;une plateforme de déploiement : Tu peux choisir parmi différentes plateformes de déploiement, telles que des services cloud (comme <strong>Heroku</strong>, <strong>AWS</strong>, ou <strong>Google Cloud</strong>), des serveurs dédiés, ou des services d&rsquo;hébergement spécialisés (comme PythonAnywhere). Chaque plateforme a ses propres avantages et exigences, donc choisis celle qui correspond le mieux à tes besoins.</li>



<li>Configuration d&rsquo;un serveur de production : Une fois que tu as choisi ta plateforme de déploiement, tu devras configurer un serveur de production pour exécuter ton application Django. Cela peut impliquer la configuration d&rsquo;un serveur <strong>WSGI </strong>(comme <strong>Gunicorn </strong>ou <strong>uWSGI</strong>), l&rsquo;installation des dépendances requises, et la configuration des paramètres de sécurité.</li>



<li>Gestion des paramètres de configuration : Pendant le déploiement, tu devras ajuster les paramètres de configuration de ton application Django pour s&rsquo;adapter à l&rsquo;environnement de production. Cela peut inclure la modification des paramètres de la base de données, la gestion des fichiers statiques et des médias, et la sécurisation des clés secrètes.</li>



<li>Collecte des fichiers statiques : Lorsque tu déployes ton application Django en production, tu devras collecter les fichiers statiques (CSS, JavaScript, images, etc.) dans un emplacement approprié. Cela permet de servir ces fichiers de manière efficace et de les rendre accessibles aux utilisateurs.</li>



<li>Gestion des performances et de la sécurité : Lors du déploiement, il est essentiel de prendre en compte les aspects de performance et de sécurité. Cela peut impliquer la mise en place de mises en cache (comme Redis ou Memcached), l&rsquo;utilisation de serveurs web sécurisés (comme Nginx), et la configuration de certificats SSL pour activer HTTPS.</li>



<li>Tests et surveillance : Avant de mettre ton application Django en production, assure-toi de l&rsquo;avoir testée de manière approfondie pour identifier et corriger les éventuels problèmes. Une fois en production, surveille l&rsquo;application régulièrement pour détecter les problèmes de performances, les erreurs et les vulnérabilités de sécurité.</li>
</ol>



<p>Chaque plateforme de déploiement a ses propres procédures et configurations spécifiques, il est donc important de consulter la documentation correspondante et de suivre les meilleures pratiques pour le déploiement d&rsquo;une application Django.</p>



<h2 class="wp-block-heading">Conclusion :</h2>



<p>Dans cet article, nous avons exploré l&rsquo;utilisation de Django en Python pour créer des applications web puissantes. Nous avons couvert l&rsquo;installation et la configuration de Django, la structure d&rsquo;un projet Django, la gestion des routes et des vues, les modèles de données et l&rsquo;ORM, les templates, les formulaires, l&rsquo;authentification et l&rsquo;autorisation, ainsi que le déploiement d&rsquo;une application Django. En suivant ce guide, tu as acquis les connaissances nécessaires pour développer tes propres applications web avec Django.</p>



<p>N&rsquo;oublie pas de consulter la documentation officielle de Django (<a href="https://docs.djangoproject.com/" target="_blank" rel="noreferrer noopener">https://docs.djangoproject.com/</a>) pour obtenir plus d&rsquo;informations détaillées et des exemples de code pratiques. Bonne découverte de Django et Python pour tes futurs projets web !</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/utilisation-de-django-en-python-un-guide-complet-pour-creer-des-applications-web-puissantes/">Utilisation de Django en Python : Un guide complet pour créer des applications web puissantes</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/utilisation-de-django-en-python-un-guide-complet-pour-creer-des-applications-web-puissantes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1865</post-id>	</item>
		<item>
		<title>Devenir programmeur freelance en Python et PHP : Guide complet pour démarrer ta carrière</title>
		<link>https://programmation.surleweb-france.fr/devenir-programmeur-freelance-en-python-et-php-guide-complet-pour-demarrer-ta-carriere/</link>
					<comments>https://programmation.surleweb-france.fr/devenir-programmeur-freelance-en-python-et-php-guide-complet-pour-demarrer-ta-carriere/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Mon, 29 May 2023 18:01:15 +0000</pubDate>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[carrière]]></category>
		<category><![CDATA[compétences]]></category>
		<category><![CDATA[conseils]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plateformes]]></category>
		<category><![CDATA[programmeur freelance]]></category>
		<category><![CDATA[projets]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=1803</guid>

					<description><![CDATA[<p>Dans cet article, découvre les étapes essentielles pour devenir un programmeur freelance en Python et PHP. Apprends comment développer tes compétences, construire ton portfolio, choisir les bonnes plateformes de freelance et gérer ta carrière avec succès. Avec ces conseils pratiques, tu seras prêt à te lancer dans le monde excitant du freelancing.</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/devenir-programmeur-freelance-en-python-et-php-guide-complet-pour-demarrer-ta-carriere/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/devenir-programmeur-freelance-en-python-et-php-guide-complet-pour-demarrer-ta-carriere/">Devenir programmeur freelance en Python et PHP : Guide complet pour démarrer ta carrière</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">I. Introduction</h2>



<p>Si tu as une passion pour la programmation et que tu souhaites te lancer en tant que programmeur freelance, tu as fait le bon choix ! Le travail indépendant dans les domaines de Python et PHP offre de nombreuses opportunités intéressantes et flexibles. Avant de plonger dans les détails, il est essentiel de comprendre l&rsquo;importance croissante du freelancing dans l&rsquo;industrie du développement.</p>



<p>Le freelancing permet aux programmeurs de travailler sur des projets variés, d&rsquo;élargir leurs compétences et de choisir leurs clients. Cela offre également la possibilité de travailler à distance, de gérer ton propre emploi du temps et de vivre une vie professionnelle plus autonome.</p>



<p>Pour commencer cette aventure, il est essentiel d&rsquo;acquérir les compétences de base en programmation Python et PHP. Si tu es débutant, ne t&rsquo;inquiète pas, il existe de nombreuses ressources en ligne pour t&rsquo;aider à apprendre les fondamentaux.</p>



<p>Pour débuter avec Python, je te recommande le site officiel de Python (<a href="https://www.python.org/" target="_blank" rel="noreferrer noopener">https://www.python.org/</a>), où tu trouveras une documentation complète, des tutoriels et des exemples de code. Un ouvrage très apprécié est <a href="https://amzn.to/3q55orp" target="_blank" rel="noreferrer noopener">« Apprendre à programmer avec Python » d&rsquo;Eric Matthes</a>.</p>



<p>En ce qui concerne PHP, tu peux consulter le site officiel de PHP (<a href="https://www.php.net/" target="_blank" rel="noreferrer noopener">https://www.php.net/</a>), qui propose également une documentation détaillée et des exemples de code. Pour un apprentissage approfondi, le livre <a href="https://amzn.to/42eRNeF" target="_blank" rel="noreferrer noopener">« PHP et MySQL pour les Nuls » de Janet Valade</a> est une excellente ressource.</p>



<p>Une fois que tu auras acquis les bases, il est temps d&rsquo;approfondir tes connaissances en explorant les fonctionnalités avancées et les bonnes pratiques de programmation.</p>



<p>Dans les chapitres suivants, nous aborderons la manière de construire un portfolio solide pour démontrer tes compétences en Python et PHP. Nous verrons également comment choisir les bonnes plateformes de freelance pour débuter ta carrière et comment trouver des opportunités de travail intéressantes.</p>



<h2 class="wp-block-heading">II. Approfondir tes connaissances</h2>



<p>Maintenant que tu as acquis les bases de la programmation en Python et PHP, il est temps d&rsquo;approfondir tes connaissances pour devenir un programmeur freelance compétent et recherché. Voici quelques étapes que tu peux suivre pour te perfectionner :</p>



<ol class="wp-block-list">
<li>Explore les fonctionnalités avancées : Les langages de programmation offrent de nombreuses fonctionnalités avancées qui peuvent améliorer ton efficacité et ta capacité à résoudre des problèmes complexes. Prends le temps d&rsquo;explorer les bibliothèques et les modules disponibles pour Python et PHP, tels que <a href="https://numpy.org/" target="_blank" rel="noreferrer noopener">NumPy</a>, <a href="https://pandas.pydata.org/" target="_blank" rel="noreferrer noopener">Pandas</a>, <a href="https://flask.palletsprojects.com/" target="_blank" rel="noreferrer noopener">Flask </a>(Python) et <a href="https://symfony.com/" target="_blank" rel="noreferrer noopener">Symfony</a>, <a href="https://codeigniter.com/" target="_blank" rel="noreferrer noopener">CodeIgniter </a>(PHP).</li>



<li>Adopte les bonnes pratiques de programmation : Il est important de développer de bonnes habitudes de programmation dès le début. Apprends les conventions de codage, la structuration du code, la gestion des erreurs et les principes de conception logicielle. Cela te permettra de produire un code propre, lisible et maintenable.</li>



<li>Familiarise-toi avec les frameworks populaires : Les frameworks sont des outils puissants qui accélèrent le processus de développement et fournissent une structure pour tes projets. <a href="https://www.djangoproject.com/" target="_blank" rel="noreferrer noopener">Django </a>(Python) et <a href="https://laravel.com/" target="_blank" rel="noreferrer noopener">Laravel </a>(PHP) sont deux frameworks très répandus et largement utilisés. Consacre du temps à apprendre ces frameworks et à comprendre comment les utiliser pour développer des applications web robustes.</li>



<li>Pratique régulièrement : La pratique est essentielle pour renforcer tes compétences en programmation. Réalise des projets personnels qui te permettent d&rsquo;explorer de nouveaux concepts, de résoudre des problèmes et d&rsquo;appliquer ce que tu as appris. Tu peux également participer à des compétitions de programmation en ligne pour relever des défis et te mesurer à d&rsquo;autres développeurs.</li>



<li>Reste à l&rsquo;affût des nouvelles tendances : Les langages de programmation évoluent constamment, et il est important de rester à jour avec les nouvelles fonctionnalités et les tendances émergentes. Suis des blogs, des forums et des communautés en ligne dédiés à Python et PHP pour te tenir informé des dernières avancées.</li>
</ol>



<p>En investissant du temps dans l&rsquo;approfondissement de tes connaissances en programmation Python et PHP, tu seras en mesure de proposer des solutions plus avancées et de qualité à tes clients en tant que programmeur freelance. Dans le prochain chapitre, nous aborderons la manière de construire un portfolio solide pour démontrer tes compétences.</p>



<h2 class="wp-block-heading">III. Construire un portfolio solide</h2>



<p>Lorsque tu te lances en tant que programmeur freelance en Python et PHP, il est essentiel de construire un portfolio solide qui met en valeur tes compétences et tes réalisations. Un portfolio bien conçu et convaincant joue un rôle crucial pour attirer des clients potentiels. Voici quelques étapes pour créer un portfolio efficace :</p>



<ol class="wp-block-list">
<li>Sélectionne tes meilleurs projets : Choisis soigneusement les projets sur lesquels tu as travaillé et sélectionne ceux qui démontrent le mieux tes compétences en Python et PHP. Opte pour des projets variés qui mettent en évidence différentes facettes de tes capacités. Assure-toi d&rsquo;inclure des descriptions claires de chaque projet, en mettant en évidence les défis que tu as relevés et les solutions que tu as apportées.</li>



<li>Crée un site web ou une plateforme en ligne : Construis un site web ou utilise une plateforme en ligne dédiée pour présenter ton portfolio. Si tu préfères créer ton propre site web, tu peux utiliser des outils de création de sites comme <a href="https://programmation.surleweb-france.fr/developpement-web-les-cms/" target="_blank" rel="noreferrer noopener">WordPress </a>ou des plateformes spécialisées pour les développeurs comme <a href="https://github.com/" target="_blank" rel="noreferrer noopener">GitHub </a>Pages. Assure-toi d&rsquo;avoir un design professionnel, une navigation facile et une mise en valeur de tes projets.</li>



<li>Inclue des démonstrations et des exemples de code : Pour permettre aux clients potentiels d&rsquo;évaluer ton travail, offre des démonstrations ou des captures d&rsquo;écran de tes projets. Si possible, fournis également des liens vers les dépôts <a href="https://github.com/" target="_blank" rel="noreferrer noopener">GitHub </a>ou <a href="https://about.gitlab.com/fr-fr/" target="_blank" rel="noreferrer noopener">GitLab </a>où tu as publié ton code source. Cela montre ta transparence et ta capacité à travailler en équipe.</li>



<li>Ajoute des témoignages et des recommandations : Si tu as travaillé avec des clients précédemment, demande-leur de te fournir des témoignages ou des recommandations que tu peux inclure dans ton portfolio. Les commentaires positifs de clients satisfaits renforcent ta crédibilité et ta réputation en tant que freelance.</li>



<li>Reste à jour : Assure-toi de mettre régulièrement à jour ton portfolio en ajoutant de nouveaux projets et en supprimant ceux qui ne sont plus pertinents. Cela démontre ton engagement continu dans l&rsquo;amélioration de tes compétences et de tes réalisations.</li>
</ol>



<p>N&rsquo;oublie pas de promouvoir ton portfolio sur les réseaux sociaux, les forums et les communautés en ligne pour attirer l&rsquo;attention des clients potentiels. Dans le prochain chapitre, nous explorerons les différentes plateformes de freelance adaptées aux débutants, où tu peux trouver des opportunités de travail intéressantes.</p>



<p>IV. Choisir les plateformes de freelance adaptées</p>



<p>Lorsque tu te lances en tant que programmeur freelance en Python et PHP, choisir les bonnes plateformes de freelance est crucial pour trouver des opportunités de travail intéressantes et développer ta carrière. Voici quelques-unes des plateformes les plus populaires adaptées aux débutants :</p>



<ol class="wp-block-list">
<li><strong>Upwork </strong>(<a href="https://www.upwork.com/" target="_blank" rel="noreferrer noopener">https://www.upwork.com/</a>) : Upwork est l&rsquo;une des plus grandes plateformes de freelance, offrant une vaste gamme de catégories, y compris le développement web en Python et PHP. Tu peux créer un profil, afficher ton portfolio, et postuler à des projets correspondant à tes compétences. Upwork offre une grande visibilité et de nombreuses opportunités de travail.</li>



<li><strong>Freelancer </strong>(<a href="https://www.freelancer.com/" target="_blank" rel="noreferrer noopener">https://www.freelancer.com/</a>) : Freelancer est une plateforme bien établie qui propose des projets dans divers domaines, y compris la programmation. Tu peux créer un profil, participer à des compétitions et enchérir sur des projets. La plateforme utilise un système de notation et de commentaires, ce qui te permet d&rsquo;accumuler des références et de développer ta réputation.</li>



<li><strong>Fiverr </strong>(<a href="https://www.fiverr.com/" target="_blank" rel="noreferrer noopener">https://www.fiverr.com/</a>) : Fiverr est une plateforme populaire pour les microservices, où tu peux créer des « gigs » pour des services spécifiques en programmation Python et PHP. C&rsquo;est une excellente option si tu préfères proposer des services spécifiques plutôt que de travailler sur des projets complets.</li>



<li><strong>Toptal </strong>(<a href="https://www.toptal.com/" target="_blank" rel="noreferrer noopener">https://www.toptal.com/</a>) : Toptal est une plateforme haut de gamme qui se concentre sur les freelances de premier plan. Elle possède un processus de sélection rigoureux pour garantir la qualité des freelances. Si tu as une expérience solide en Python et PHP, Toptal peut être une excellente option pour accéder à des projets de haute qualité.</li>



<li><strong>Guru </strong>(<a href="https://www.guru.com/" target="_blank" rel="noreferrer noopener">https://www.guru.com/</a>) : Guru est une plateforme qui propose des opportunités de travail freelance dans de nombreux domaines, y compris la programmation. Elle offre des fonctionnalités telles que la messagerie en temps réel et la gestion des projets, ce qui facilite la communication avec les clients.</li>
</ol>



<p>Avant de t&rsquo;inscrire sur une plateforme, prends le temps de lire les conditions, les frais associés et les politiques de la plateforme. Assure-toi que la plateforme correspond à tes besoins et à ton style de travail.</p>



<p>En utilisant ces plateformes, tu pourras accéder à une large gamme de projets, trouver des clients potentiels et développer ta réputation en tant que programmeur freelance en Python et PHP.</p>



<p>Dans le prochain chapitre, nous aborderons la manière de trouver des opportunités de travail et comment te démarquer lors de la candidature pour augmenter tes chances de succès.</p>



<h2 class="wp-block-heading">V. Trouver des opportunités de travail</h2>



<p>Maintenant que tu as choisi les plateformes de freelance qui correspondent à tes besoins, il est temps de trouver des opportunités de travail intéressantes en Python et PHP. Voici quelques conseils pour te démarquer et augmenter tes chances de réussite :</p>



<ol class="wp-block-list">
<li>Recherche active de projets : Parcoure les projets disponibles sur les plateformes de freelance que tu as choisies. Utilise les filtres de recherche pour trouver des projets dans ta niche de compétences. Lis attentivement les descriptions de projet et assure-toi que les exigences correspondent à tes compétences. N&rsquo;hésite pas à poser des questions aux clients potentiels pour obtenir des clarifications.</li>



<li>Postule de manière ciblée : Plutôt que de postuler à tous les projets disponibles, concentre-toi sur ceux qui correspondent le mieux à tes compétences et à tes intérêts. Personnalise chaque candidature en soulignant tes expériences pertinentes et en expliquant comment tu peux apporter de la valeur au projet du client. Sois clair, concis et professionnel dans tes communications.</li>



<li>Mets en valeur ton portfolio : Lorsque tu postules à un projet, assure-toi d&rsquo;inclure un lien vers ton portfolio en mettant en évidence les projets pertinents pour le poste. Les clients apprécient de voir des exemples concrets de ton travail, alors assure-toi d&rsquo;ajouter des détails sur tes contributions et les résultats obtenus.</li>



<li>Soigne ton profil : Un profil bien conçu et complet attire l&rsquo;attention des clients potentiels. Assure-toi d&rsquo;avoir une biographie professionnelle, une photo de profil appropriée et des compétences clairement listées. Inclue également tes certificats ou diplômes pertinents pour renforcer ta crédibilité.</li>



<li>Gagne en réputation : Au fur et à mesure que tu réalises des projets, demande à tes clients de te laisser des commentaires et des évaluations. Les évaluations positives renforcent ta réputation et ta crédibilité en tant que freelance. N&rsquo;hésite pas à demander des recommandations écrites que tu peux ajouter à ton portfolio.</li>



<li>Sois réactif et professionnel : Lorsque tu es en contact avec des clients potentiels, réponds rapidement à leurs messages et assure une communication claire et professionnelle. Sois ouvert aux commentaires et aux ajustements, et respecte les délais convenus.</li>



<li>Réseaute et fais connaître tes services : En dehors des plateformes de freelance, participe à des communautés en ligne, des forums et des événements liés à la programmation en Python et PHP. Cela te permettra de rencontrer d&rsquo;autres professionnels du domaine, d&rsquo;apprendre de nouvelles choses et de trouver des opportunités de travail.</li>
</ol>



<p>En appliquant ces stratégies, tu augmenteras tes chances de trouver des opportunités de travail intéressantes en tant que programmeur freelance en Python et PHP. Dans le prochain chapitre, nous aborderons la manière de gérer efficacement ta carrière de freelance pour assurer ton succès à long terme.</p>



<h2 class="wp-block-heading">VI. Gérer efficacement ta carrière de freelance</h2>



<p>Une fois que tu as trouvé des opportunités de travail en tant que programmeur freelance en Python et PHP, il est important de gérer efficacement ta carrière pour assurer ton succès à long terme. Voici quelques conseils pour t&rsquo;aider :</p>



<ol class="wp-block-list">
<li>Établir des tarifs et des contrats justes : Détermine des tarifs qui reflètent la valeur de ton expertise et de ton travail. N&rsquo;hésite pas à faire des recherches sur les tarifs moyens pratiqués dans ton domaine et ajuste tes prix en fonction de ton expérience et de la complexité des projets. Élabore des contrats clairs et détaillés pour chaque projet afin de protéger tes intérêts et d&rsquo;établir des attentes mutuelles avec tes clients.</li>



<li>Maintenir une communication claire : La communication est essentielle pour réussir en tant que freelance. Assure-toi de maintenir une communication régulière et claire avec tes clients. Sois disponible pour répondre à leurs questions, donne des mises à jour sur l&rsquo;avancement du projet et demande des clarifications si nécessaire. Une communication fluide renforce la confiance et la satisfaction du client.</li>



<li>Respecter les délais : Respecte toujours les délais convenus avec tes clients. Livrer tes projets à temps montre ton professionnalisme et ta fiabilité. Si tu rencontres des problèmes ou des retards imprévus, communique immédiatement avec ton client pour trouver des solutions et renégocier les délais si nécessaire.</li>



<li>Cultiver de bonnes relations avec les clients : Développe des relations professionnelles solides avec tes clients. Sois poli, courtois et à l&rsquo;écoute de leurs besoins. Suis les instructions avec précision et cherche à dépasser leurs attentes. Une relation client positive peut conduire à des recommandations et à des opportunités de travail supplémentaires.</li>



<li>Solliciter des commentaires et s&rsquo;améliorer : À la fin de chaque projet, demande à tes clients de te donner leur avis et leurs commentaires sur ton travail. Utilise ces commentaires pour t&rsquo;améliorer continuellement et affiner tes compétences. Assimile les critiques constructives et cherche des moyens d&rsquo;améliorer ta prestation.</li>



<li>Investir dans l&rsquo;apprentissage continu : Les langages de programmation évoluent constamment, alors il est important de rester à jour avec les nouvelles tendances et les nouvelles fonctionnalités. Consacre du temps à l&rsquo;apprentissage continu en suivant des cours en ligne, en lisant des blogs spécialisés et en participant à des formations pertinentes. Plus tu enrichis tes compétences, plus tu seras compétitif sur le marché.</li>



<li>Gérer tes finances et tes obligations fiscales : En tant que freelance, tu es responsable de gérer tes finances et de respecter tes obligations fiscales. Assure-toi de tenir des registres précis de tes revenus et dépenses, et consulte un professionnel ou un comptable pour t&rsquo;assurer de respecter toutes les lois fiscales en vigueur.</li>
</ol>



<p>En mettant en pratique ces conseils, tu pourras gérer efficacement ta carrière de freelance en Python et PHP et construire une réputation solide. N&rsquo;oublie pas de prendre soin de toi, d&rsquo;établir un équilibre entre vie professionnelle et vie personnelle, et de continuer à développer tes compétences pour rester compétitif sur le marché du freelance.</p>



<h2 class="wp-block-heading">VII. Se perfectionner continuellement</h2>



<p>Pour réussir en tant que programmeur freelance en Python et PHP, il est essentiel de se perfectionner continuellement et de rester à jour avec les dernières tendances et les nouvelles fonctionnalités. Voici quelques conseils pour développer tes compétences de manière constante :</p>



<ol class="wp-block-list">
<li>Reste informé : Suis les blogs, les sites d&rsquo;actualités et les communautés en ligne dédiés à la programmation en Python et PHP. Garde un œil sur les nouvelles fonctionnalités, les frameworks émergents, les bonnes pratiques de développement et les avancées technologiques dans ton domaine.</li>



<li>Participe à des formations en ligne : Il existe de nombreuses plateformes en ligne qui proposent des cours et des formations sur Python et PHP. Inscris-toi à des cours pertinents pour renforcer tes compétences et en apprendre davantage sur des sujets spécifiques. Certains sites populaires incluent Udemy, Coursera et LinkedIn Learning.</li>



<li>Expérimente de nouveaux projets : N&rsquo;aie pas peur de sortir de ta zone de confort et d&rsquo;explorer de nouveaux projets. Lance-toi dans des défis personnels, crée des applications ou des modules réutilisables, et explore des domaines connexes tels que l&rsquo;intelligence artificielle, l&rsquo;apprentissage automatique ou la sécurité informatique.</li>



<li>Contribue à des projets open source : Contribuer à des projets open source est un excellent moyen de perfectionner tes compétences tout en collaborant avec d&rsquo;autres développeurs. Recherche des projets open source en Python et PHP qui t&rsquo;intéressent et propose ton aide. Cela te permettra d&rsquo;apprendre des bonnes pratiques, de travailler sur des projets concrets et de te faire remarquer dans la communauté.</li>



<li>Participe à des événements et des conférences : Assiste à des conférences, des webinaires ou des meetups liés à la programmation en Python et PHP. Ces événements offrent des opportunités de réseautage, de partage de connaissances et d&rsquo;apprentissage auprès d&rsquo;experts du domaine. Tu peux découvrir de nouvelles idées, obtenir des conseils précieux et élargir ton réseau professionnel.</li>



<li>Crée ton propre projet : Identifie un besoin ou un problème que tu aimerais résoudre, puis lance-toi dans la création de ton propre projet. Que ce soit une application, un outil ou une bibliothèque, travailler sur ton propre projet te permettra d&rsquo;appliquer tes compétences, de découvrir de nouveaux défis et de montrer ton initiative aux clients potentiels.</li>
</ol>



<p>En investissant du temps et des efforts dans ton développement professionnel continu, tu resteras à la pointe des dernières technologies et des meilleures pratiques en programmation Python et PHP. Cela te permettra de fournir des solutions de haute qualité à tes clients et de rester compétitif dans le domaine du freelance.</p>



<p>Dans la conclusion, nous récapitulerons les étapes clés pour devenir un programmeur freelance prospère en Python et PHP.</p>



<h2 class="wp-block-heading">VIII. Conclusion</h2>



<p>Félicitations ! Tu as parcouru les différentes étapes pour devenir un programmeur freelance en Python et PHP. En récapitulant, voici les points clés à retenir :</p>



<ol class="wp-block-list">
<li>Acquiers les compétences de base en Python et PHP en utilisant des ressources en ligne, des tutoriels et des ouvrages pertinents.</li>



<li>Approfondis tes connaissances en explorant les fonctionnalités avancées, les bonnes pratiques de programmation et les frameworks populaires.</li>



<li>Construis un portfolio solide en sélectionnant tes meilleurs projets et en créant un site web ou une plateforme en ligne pour les présenter.</li>



<li>Choisis les plateformes de freelance adaptées à tes besoins, telles que Upwork, Freelancer ou Fiverr, pour trouver des opportunités de travail.</li>



<li>Recherche activement des projets, personnalise tes candidatures et mets en valeur ton portfolio lors des démarches.</li>



<li>Gère efficacement ta carrière en établissant des tarifs justes, en maintenant une communication claire avec tes clients et en respectant les délais.</li>



<li>Investis dans ton apprentissage continu en restant informé, en participant à des formations, en expérimentant de nouveaux projets et en contribuant à des projets open source.</li>



<li>Développe ton réseau professionnel en participant à des événements et des conférences dans ton domaine.</li>
</ol>



<p>Rappelle-toi que devenir un programmeur freelance prospère demande du temps, de la persévérance et de l&rsquo;engagement. Sois patient, continue à améliorer tes compétences et à construire ta réputation. Avec le temps, tu pourras développer une carrière florissante en tant que programmeur freelance en Python et PHP.</p>



<p>N&rsquo;oublie pas de prendre soin de toi, de maintenir un équilibre entre vie professionnelle et vie personnelle, et de continuer à apprendre et à évoluer dans ce domaine passionnant. Bonne chance dans ta carrière de freelance !</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/devenir-programmeur-freelance-en-python-et-php-guide-complet-pour-demarrer-ta-carriere/">Devenir programmeur freelance en Python et PHP : Guide complet pour démarrer ta carrière</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/devenir-programmeur-freelance-en-python-et-php-guide-complet-pour-demarrer-ta-carriere/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1803</post-id>	</item>
		<item>
		<title>Guide essentiel de sécurité et cybersécurité en Python : Protégez vos applications avec confiance</title>
		<link>https://programmation.surleweb-france.fr/guide-essentiel-de-securite-et-cybersecurite-en-python-protegez-vos-applications-avec-confiance/</link>
					<comments>https://programmation.surleweb-france.fr/guide-essentiel-de-securite-et-cybersecurite-en-python-protegez-vos-applications-avec-confiance/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Sun, 21 May 2023 16:21:42 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[attaques]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[cybersécurité]]></category>
		<category><![CDATA[données sensibles]]></category>
		<category><![CDATA[protection des applications]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[vulnérabilités]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=1692</guid>

					<description><![CDATA[<p>Cet article approfondi vous fournira des conseils pratiques et des bonnes pratiques pour renforcer la sécurité de vos applications Python. Découvrez les meilleures stratégies pour prévenir les vulnérabilités, les attaques courantes et protéger vos données sensibles</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/guide-essentiel-de-securite-et-cybersecurite-en-python-protegez-vos-applications-avec-confiance/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/guide-essentiel-de-securite-et-cybersecurite-en-python-protegez-vos-applications-avec-confiance/">Guide essentiel de sécurité et cybersécurité en Python : Protégez vos applications avec confiance</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Chapitre I : Introduction à la sécurité en Python</h2>



<p>La sécurité est d&rsquo;une importance primordiale dans le développement d&rsquo;applications Python, car des failles de sécurité peuvent compromettre les données sensibles, mettre en danger la confidentialité des utilisateurs et entraîner des conséquences néfastes. Dans ce chapitre, nous allons explorer les risques de sécurité courants et l&rsquo;importance de la sécurité dans le développement d&rsquo;applications Python.</p>



<h3 class="wp-block-heading">A. Importance de la sécurité des applications Python La sécurité des applications </h3>



<p>Python revêt une importance cruciale pour garantir la protection des données et la confiance des utilisateurs. Les applications mal sécurisées peuvent être vulnérables à des attaques telles que les injections de code, les attaques XSS, les atteintes à la confidentialité des données, et bien d&rsquo;autres encore. Les conséquences d&rsquo;une violation de sécurité peuvent inclure des pertes financières, une atteinte à la réputation et des conséquences juridiques.</p>



<p>Pour illustrer l&rsquo;importance de la sécurité, considérons un exemple de vulnérabilité courante : les injections de code SQL. Ces attaques surviennent lorsque des données non vérifiées sont directement incorporées dans des requêtes SQL, permettant aux attaquants de manipuler la base de données. Voici un exemple de code vulnérable :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import sqlite3

def get_user(username):
    conn = sqlite3.connect('database.db')
    cursor = conn.cursor()
    query = f"SELECT * FROM users WHERE username='{username}'"
    cursor.execute(query)
    result = cursor.fetchone()
    conn.close()
    return result</pre>



<p>Dans cet exemple, si la variable <code>username</code> est contrôlée par un attaquant et qu&rsquo;elle contient une chaîne malicieuse telle que <code>' OR 1=1 --</code>, cela permettrait à l&rsquo;attaquant de contourner l&rsquo;authentification et d&rsquo;obtenir des informations sensibles.</p>



<h3 class="wp-block-heading">B. Les risques de sécurité dans le développement Python </h3>



<p>Il existe plusieurs risques de sécurité courants auxquels les développeurs Python peuvent être confrontés lors de la création d&rsquo;applications. Cela comprend les attaques de type Cross-Site Scripting (XSS), les vulnérabilités liées aux paramètres de configuration par défaut, les fuites d&rsquo;informations sensibles, les attaques de déni de service (DoS), etc.</p>



<p>Par exemple, considérons les attaques XSS où un attaquant peut injecter du code JavaScript malveillant dans une page Web, qui sera ensuite exécuté sur le navigateur des utilisateurs. Pour prévenir de telles attaques, il est essentiel de filtrer et d&rsquo;échapper les entrées utilisateur avant de les afficher dans les pages web. Des bibliothèques telles que Flask peuvent être utilisées pour échapper automatiquement les données avant leur affichage.</p>



<h3 class="wp-block-heading">C. Objectif de l&rsquo;article : fournir des conseils pratiques pour renforcer la sécurité en Python </h3>



<p>L&rsquo;objectif principal de cet article est de fournir des conseils pratiques et des solutions pour renforcer la sécurité des applications Python. Nous aborderons des techniques de prévention des attaques courantes, des pratiques de développement sécurisé, des méthodes de stockage sécurisé des données, et bien plus encore. Chaque section ultérieure abordera des aspects spécifiques de la sécurité en Python, fournissant aux lecteurs les connaissances et les outils nécessaires pour protéger efficacement leurs applications.</p>



<p>Pour approfondir vos connaissances sur l&rsquo;importance de la sécurité dans le développement d&rsquo;applications Python, vous pouvez consulter des ressources en ligne telles que :</p>



<ul class="wp-block-list">
<li>Le guide de sécurité Python officiel (<a href="https://docs.python.org/3/library/security.html" target="_blank" rel="noreferrer noopener">https://docs.python.org/3/library/security.html</a>) fournit des informations détaillées sur les meilleures pratiques de sécurité en Python.</li>



<li>Le rapport annuel Verizon Data Breach Investigations Report (DBIR) (<a href="https://enterprise.verizon.com/resources/reports/dbir/" target="_blank" rel="noreferrer noopener">https://enterprise.verizon.com/resources/reports/dbir/</a>) propose des statistiques et des analyses sur les incidents de sécurité et les violations de données.</li>
</ul>



<p>Pour illustrer les risques de sécurité, vous pouvez inclure des exemples de code vulnérable et expliquer les conséquences possibles. Par exemple, pour les attaques XSS, vous pouvez montrer un exemple de code vulnérable dans lequel des données non filtrées sont affichées directement dans une page web :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/hello')
def hello():
    name = request.args.get('name')
    return render_template('hello.html', name=name)

if __name__ == '__main__':
    app.run()</pre>



<p>Dans cet exemple, si un attaquant fournit une valeur malicieuse pour le paramètre <code>name</code>, il peut injecter du code JavaScript et compromettre la sécurité de la page. Vous pouvez expliquer comment utiliser la fonction <code>escape()</code> de Flask pour échapper les données avant de les afficher, prévenant ainsi les attaques XSS.</p>



<h2 class="wp-block-heading">Chapitre II : Évaluation des risques et identification des vulnérabilités</h2>



<p>Dans ce chapitre, nous allons explorer des techniques et des bonnes pratiques pour évaluer les risques de sécurité et identifier les vulnérabilités potentielles dans les applications Python. Nous aborderons des méthodes telles que l&rsquo;analyse statique du code, l&rsquo;inspection des dépendances et l&rsquo;utilisation d&rsquo;outils automatisés pour détecter les failles de sécurité.</p>



<h3 class="wp-block-heading">A. Méthodes d&rsquo;évaluation des risques de sécurité </h3>



<p>Pour évaluer les risques de sécurité d&rsquo;une application Python, il est essentiel de suivre une approche systématique. Des techniques telles que l&rsquo;analyse statique du code, l&rsquo;inspection des dépendances et la réalisation d&rsquo;audits de sécurité peuvent aider à identifier les vulnérabilités potentielles. L&rsquo;analyse statique du code permet de rechercher des erreurs et des pratiques non sécurisées, tandis que l&rsquo;inspection des dépendances permet de détecter des composants vulnérables utilisés dans l&rsquo;application. Des outils tels que Bandit (<a href="https://bandit.readthedocs.io/" target="_blank" rel="noreferrer noopener">https://bandit.readthedocs.io/</a>) et Pyre (<a href="https://pyre-check.org/" target="_blank" rel="noreferrer noopener">https://pyre-check.org/</a>) peuvent être utilisés pour l&rsquo;analyse de code statique.</p>



<h3 class="wp-block-heading">B. Identification des vulnérabilités potentielles dans les applications </h3>



<p>Python Pour identifier les vulnérabilités potentielles, il est important de comprendre les types d&rsquo;attaques auxquelles l&rsquo;application pourrait être exposée. Les injections de code SQL, les attaques XSS, les vulnérabilités de configuration, les problèmes d&rsquo;authentification et d&rsquo;autorisation, etc., sont des exemples courants de vulnérabilités dans les applications Python. En comprenant ces vulnérabilités, les développeurs peuvent prendre des mesures pour les prévenir. Des ressources telles que le guide de sécurité Python (<a href="https://docs.python.org/3/library/security.html" target="_blank" rel="noreferrer noopener">https://docs.python.org/3/library/security.html</a>) fournissent des informations détaillées sur les vulnérabilités courantes et les bonnes pratiques pour les prévenir.</p>



<h3 class="wp-block-heading">C. Outils et ressources pour l&rsquo;analyse de sécurité </h3>



<p>Il existe de nombreux outils et ressources disponibles pour aider à l&rsquo;analyse de sécurité des applications Python. Des outils tels que Bandit, Safety (<a href="https://pyup.io/safety/" target="_blank" rel="noreferrer noopener">https://pyup.io/safety/</a>), et OWASP Dependency-Check (<a href="https://owasp.org/www-project-dependency-check/" target="_blank" rel="noreferrer noopener">https://owasp.org/www-project-dependency-check/</a>) peuvent être utilisés pour analyser le code et les dépendances à la recherche de vulnérabilités connues. De plus, des guides et des bonnes pratiques tels que le guide OWASP Top 10 (<a href="https://owasp.org/www-project-top-ten/" target="_blank" rel="noreferrer noopener">https://owasp.org/www-project-top-ten/</a>) offrent des informations sur les principales vulnérabilités à surveiller et des conseils pour les éviter.</p>



<h2 class="wp-block-heading">Chapitre III : Prévention des attaques courantes</h2>



<p>Dans ce chapitre, nous aborderons des techniques et des bonnes pratiques pour prévenir les attaques courantes telles que les injections de code, les attaques de type Cross-Site Scripting (XSS), les attaques de type Cross-Site Request Forgery (CSRF) et les attaques de déni de service (DoS).</p>



<h3 class="wp-block-heading">A. Injection de code : prévention des injections SQL et XSS </h3>



<p>Les injections de code, telles que les injections SQL et les attaques XSS, sont des attaques courantes qui peuvent compromettre la sécurité des applications Python. Pour les prévenir, il est essentiel d&rsquo;utiliser des requêtes paramétrées ou des ORM pour interagir avec les bases de données. Par exemple, dans le cas des injections SQL, voici un exemple de code sécurisé :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import sqlite3

def get_user(username):
    conn = sqlite3.connect('database.db')
    cursor = conn.cursor()
    query = "SELECT * FROM users WHERE username = ?"
    cursor.execute(query, (username,))
    result = cursor.fetchone()
    conn.close()
    return result</pre>



<p>Dans cet exemple, nous utilisons une requête paramétrée avec le point d&rsquo;interrogation (<code>?</code>) pour indiquer le paramètre dynamique dans la requête SQL. En passant la valeur <code>username</code> comme un tuple <code>(username,)</code> dans la méthode <code>execute()</code>, nous évitons les risques d&rsquo;injection SQL.</p>



<p>Pour prévenir les attaques XSS, il est important d&rsquo;échapper les données avant de les afficher dans les pages web. Des bibliothèques telles que Jinja2 (<a href="https://jinja.palletsprojects.com/" target="_blank" rel="noreferrer noopener">https://jinja.palletsprojects.com/</a>) fournissent des fonctions d&rsquo;échappement pour éviter l&rsquo;exécution de code JavaScript non autorisé.</p>



<h3 class="wp-block-heading">B. Cross-Site Scripting (XSS) : techniques de défense </h3>



<p>Les attaques de type Cross-Site Scripting (XSS) peuvent permettre à des attaquants d&rsquo;injecter du code malveillant dans les pages web et d&rsquo;exploiter la confiance des utilisateurs. Pour se prémunir contre ces attaques, il est essentiel d&rsquo;échapper et de filtrer les données avant de les afficher dans les pages. Par exemple, avec Flask, vous pouvez utiliser la fonction <code>escape()</code> pour échapper les données :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from flask import Flask, escape

app = Flask(__name__)

@app.route('/')
def hello():
    name = "&amp;lt;script&amp;gt;alert('XSS attack');&amp;lt;/script&amp;gt;"
    escaped_name = escape(name)
    return f"Hello, {escaped_name}!"

if __name__ == '__main__':
    app.run()</pre>



<p>Dans cet exemple, la fonction <code>escape()</code> de Flask échappe la chaîne <code>name</code>, garantissant qu&rsquo;elle est affichée en tant que texte brut et empêchant l&rsquo;exécution du code JavaScript malveillant.</p>



<h3 class="wp-block-heading">C. Cross-Site Request Forgery (CSRF) : protection contre les attaques CSRF </h3>



<p>Les attaques de type Cross-Site Request Forgery (CSRF) peuvent permettre à des attaquants de forger des requêtes malveillantes au nom des utilisateurs authentifiés. Pour se protéger contre ces attaques, il est important d&rsquo;implémenter des mécanismes de protection tels que l&rsquo;utilisation de jetons anti-CSRF (CSRF tokens) et la vérification de l&rsquo;en-tête <code>Referer</code>. Par exemple, avec Flask, vous pouvez utiliser le module <code>CSRFProtect</code> pour ajouter une protection CSRF à votre application :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from flask import Flask
from flask_wtf.csrf import CSRFProtect

app = Flask(__name__)
csrf = CSRFProtect(app)

@app.route('/')
def index():
    return 'Protected page'

if __name__ == '__main__':
    app.run()</pre>



<p>Dans cet exemple, le module <code>CSRFProtect</code> ajoute automatiquement un jeton CSRF à chaque formulaire généré par l&rsquo;application Flask, et vérifie que le jeton est présent et valide lors de la réception d&rsquo;une requête POST.</p>



<h3 class="wp-block-heading">D. Prévention des attaques de déni de service (DoS) </h3>



<p>Les attaques de déni de service (DoS) visent à submerger une application de demandes excessives, entraînant une interruption de service pour les utilisateurs légitimes. Pour prévenir ces attaques, des stratégies telles que la limitation de la fréquence des requêtes, la mise en attente des demandes excessives et l&rsquo;utilisation de mécanismes de mise en cache peuvent être mises en place. Par exemple, vous pouvez utiliser la bibliothèque Flask-Limiter (<a href="https://flask-limiter.readthedocs.io/" target="_blank" rel="noreferrer noopener">https://flask-limiter.readthedocs.io/</a>) pour définir des limites de taux pour les requêtes.</p>



<h2 class="wp-block-heading">Chapitre IV : Sécurisation des données sensibles</h2>



<p>Dans ce chapitre, nous allons explorer des techniques et des bonnes pratiques pour sécuriser les données sensibles dans les applications Python. Nous aborderons des sujets tels que le stockage sécurisé des données, le chiffrement des données sensibles, la gestion des mots de passe et la protection des données lors des transferts réseau.</p>



<h3 class="wp-block-heading">A. Stockage sécurisé des données </h3>



<p>Le stockage sécurisé des données est essentiel pour protéger les informations sensibles. Il est recommandé de séparer les données sensibles des données publiques et d&rsquo;utiliser des systèmes de gestion de bases de données sécurisés avec des accès contrôlés. Par exemple, vous pouvez utiliser SQLAlchemy (<a href="https://www.sqlalchemy.org/" target="_blank" rel="noreferrer noopener">https://www.sqlalchemy.org/</a>) pour interagir avec la base de données de manière sécurisée en utilisant des ORM.</p>



<h3 class="wp-block-heading">B. Chiffrement des données sensibles </h3>



<p>Le chiffrement est une mesure de sécurité essentielle pour protéger les données sensibles. Vous pouvez utiliser des algorithmes de chiffrement symétrique et asymétrique pour crypter les données avant de les stocker ou de les transmettre. La bibliothèque cryptography (<a href="https://cryptography.io/" target="_blank" rel="noreferrer noopener">https://cryptography.io/</a>) offre des fonctionnalités de chiffrement puissantes et faciles à utiliser en Python. Voici un exemple d&rsquo;utilisation du chiffrement symétrique avec AES :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from cryptography.fernet import Fernet

# Générer une clé de chiffrement
key = Fernet.generate_key()

# Créer un objet Fernet avec la clé
cipher = Fernet(key)

# Chiffrer les données sensibles
data = b"Data to encrypt"
encrypted_data = cipher.encrypt(data)</pre>



<p>Dans cet exemple, nous utilisons la bibliothèque cryptography pour générer une clé de chiffrement, créer un objet Fernet avec cette clé, puis chiffrer les données sensibles à l&rsquo;aide de l&rsquo;algorithme AES.</p>



<h3 class="wp-block-heading">C. Bonnes pratiques de gestion des mots de passe </h3>



<p>La gestion des mots de passe est cruciale pour assurer la sécurité des applications. Il est recommandé d&rsquo;utiliser des algorithmes de hachage robustes tels que bcrypt ou Argon2 pour stocker les mots de passe de manière sécurisée. Vous devez également appliquer des politiques de mot de passe solides, telles que l&rsquo;exigence de complexité et la rotation régulière des mots de passe. La bibliothèque passlib (<a href="https://passlib.readthedocs.io/" target="_blank" rel="noreferrer noopener">https://passlib.readthedocs.io/</a>) fournit des fonctionnalités de hachage et de vérification de mots de passe faciles à utiliser.</p>



<h3 class="wp-block-heading">D. Protection des données lors des transferts réseau </h3>



<p>Lors de la transmission de données sensibles sur un réseau, il est essentiel d&rsquo;utiliser des protocoles sécurisés tels que HTTPS pour chiffrer les communications. Des bibliothèques telles que Requests (<a href="https://docs.python-requests.org/" target="_blank" rel="noreferrer noopener">https://docs.python-requests.org/</a>) offrent des fonctionnalités pour effectuer des requêtes sécurisées. Vous devez également prendre en compte la gestion des certificats et des clés de chiffrement pour garantir l&rsquo;authenticité et la confidentialité des données échangées.</p>



<h2 class="wp-block-heading">Chapitre V : Bonnes pratiques de développement sécurisé</h2>



<p>Dans ce chapitre, nous aborderons les bonnes pratiques de développement sécurisé en Python. Il est essentiel de suivre des méthodologies et des approches de développement qui intègrent la sécurité dès le départ. Nous examinerons l&rsquo;utilisation de bibliothèques et de frameworks sécurisés, la validation et le filtrage des entrées utilisateur, la gestion des erreurs et des exceptions de manière sécurisée, ainsi que les tests de sécurité et les audits de code.</p>



<h3 class="wp-block-heading">A. Utilisation de bibliothèques et frameworks sécurisés </h3>



<p>Le choix de bibliothèques et de frameworks sécurisés est une étape essentielle pour garantir la sécurité de votre application Python. Optez pour des solutions bien établies, maintenues et réputées pour leur sécurité. Des frameworks tels que Django (<a href="https://www.djangoproject.com/" target="_blank" rel="noreferrer noopener">https://www.djangoproject.com/</a>) et Flask (<a href="https://flask.palletsprojects.com/" target="_blank" rel="noreferrer noopener">https://flask.palletsprojects.com/</a>) incluent des fonctionnalités de sécurité intégrées, telles que la protection CSRF et la gestion sécurisée des sessions.</p>



<h3 class="wp-block-heading">B. Validation et filtrage des entrées utilisateur </h3>



<p>La validation et le filtrage des entrées utilisateur sont essentiels pour prévenir les attaques d&rsquo;injection et les erreurs de manipulation de données. Utilisez des mécanismes de validation tels que les régex, les validateurs de formulaires et les contraintes de modèle pour garantir que les données entrées par les utilisateurs sont correctes et sécurisées. Les bibliothèques comme WTForms (<a href="https://wtforms.readthedocs.io/" target="_blank" rel="noreferrer noopener">https://wtforms.readthedocs.io/</a>) offrent des fonctionnalités pratiques pour la validation des formulaires en Python.</p>



<h3 class="wp-block-heading">C. Gestion des erreurs et des exceptions de manière sécurisée </h3>



<p>Une gestion appropriée des erreurs et des exceptions est essentielle pour éviter la divulgation d&rsquo;informations sensibles et pour garantir que les utilisateurs ne rencontrent pas de comportements inattendus. Évitez de divulguer des informations sensibles dans les messages d&rsquo;erreur, et utilisez des logs appropriés pour enregistrer les erreurs sans compromettre la sécurité. La documentation officielle de Python (<a href="https://docs.python.org/3/tutorial/errors.html" target="_blank" rel="noreferrer noopener">https://docs.python.org/3/tutorial/errors.html</a>) fournit des informations détaillées sur la gestion des erreurs et des exceptions en Python.</p>



<h3 class="wp-block-heading">D. Tests de sécurité et audits de code </h3>



<p>Les tests de sécurité et les audits de code sont des étapes cruciales pour identifier les vulnérabilités potentielles et garantir la sécurité de l&rsquo;application. Effectuez régulièrement des tests de sécurité pour détecter les failles de sécurité, tels que les scanners de vulnérabilités automatisés, les tests d&rsquo;intrusion et les audits de sécurité du code source. Des outils tels que Bandit, Safety et OWASP ZAP (<a href="https://owasp.org/www-project-zap/" target="_blank" rel="noreferrer noopener">https://owasp.org/www-project-zap/</a>) peuvent être utilisés pour effectuer des tests de sécurité automatisés.</p>



<h2 class="wp-block-heading">Chapitre VI : Conclusion et ressources supplémentaires</h2>



<p>Dans ce chapitre final, nous récapitulerons les principaux points abordés dans cet article sur la sécurité en Python. Nous fournirons également des ressources supplémentaires pour approfondir la sécurité en Python et encouragerons les lecteurs à intégrer les bonnes pratiques de sécurité dans leurs développements.</p>



<h3 class="wp-block-heading">A. Récapitulation des principales mesures de sécurité en Python </h3>



<p>Nous rappellerons les principales mesures de sécurité abordées tout au long de l&rsquo;article, telles que la prévention des attaques courantes telles que les injections de code, les attaques XSS et les attaques CSRF, la sécurisation des données sensibles par le chiffrement et le stockage sécurisé, et les bonnes pratiques de développement sécurisé. Nous soulignerons l&rsquo;importance de prendre en compte la sécurité dès le début du processus de développement.</p>



<h3 class="wp-block-heading">B. Ressources supplémentaires pour approfondir la sécurité en Python </h3>



<p>Nous fournirons une liste de ressources supplémentaires, telles que des livres, des blogs, des tutoriels en ligne, des cours et des communautés en ligne, où les lecteurs peuvent approfondir leurs connaissances sur la sécurité en Python. Cela peut inclure des sites tels que OWASP (<a href="https://owasp.org/" target="_blank" rel="noreferrer noopener">https://owasp.org/</a>), la Python Software Foundation (<a href="https://www.python.org/psf/" target="_blank" rel="noreferrer noopener">https://www.python.org/psf/</a>) et des blogs de sécurité tels que The Open Web Application Security Project (<a href="https://www.owasp.org/" target="_blank" rel="noreferrer noopener">https://www.owasp.org/</a>).</p>



<h3 class="wp-block-heading">C. Encouragement à intégrer les bonnes pratiques de sécurité dans le développement Python </h3>



<p>En conclusion, nous encouragerons vivement les lecteurs à intégrer les bonnes pratiques de sécurité dans leurs développements Python. La sécurité doit être une préoccupation constante et intégrée à chaque étape du processus de développement. En adoptant une approche proactive en matière de sécurité, les développeurs peuvent réduire les risques de vulnérabilités et de violations de sécurité, protégeant ainsi leurs applications et les données sensibles de leurs utilisateurs.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/guide-essentiel-de-securite-et-cybersecurite-en-python-protegez-vos-applications-avec-confiance/">Guide essentiel de sécurité et cybersécurité en Python : Protégez vos applications avec confiance</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/guide-essentiel-de-securite-et-cybersecurite-en-python-protegez-vos-applications-avec-confiance/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1692</post-id>	</item>
		<item>
		<title>Python, variables et type de données</title>
		<link>https://programmation.surleweb-france.fr/python-variables-et-type-de-donnees/</link>
					<comments>https://programmation.surleweb-france.fr/python-variables-et-type-de-donnees/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Mon, 06 Mar 2023 17:00:00 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[chaînes de caractères]]></category>
		<category><![CDATA[conversion de types]]></category>
		<category><![CDATA[dictionnaires]]></category>
		<category><![CDATA[listes]]></category>
		<category><![CDATA[nombres à virgule flottante]]></category>
		<category><![CDATA[nombres entiers]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tuples]]></category>
		<category><![CDATA[types de données]]></category>
		<category><![CDATA[variables]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=1556</guid>

					<description><![CDATA[<p>Découvrez les différents types de données en Python et comment les utiliser pour stocker différentes informations dans vos programmes grâce aux variables!</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/python-variables-et-type-de-donnees/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-variables-et-type-de-donnees/">Python, variables et type de données</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Retrouvez le sommaire de l&rsquo;ensembles des articles Python en cliquant sur <a href="https://programmation.surleweb-france.fr/python-tous-les-articles-classes">ce lien</a>.</p>



<p>En Python, les variables sont des noms qui font référence à des emplacements de mémoire où les valeurs sont stockées. Les variables peuvent contenir différents types de données en fonction de leur utilisation dans un programme.</p>



<p>Voici quelques types de données couramment utilisés en Python :</p>



<ul class="wp-block-list" type="1" start="1">
<li>Les nombres entiers (<strong><em>int</em></strong>) : Les nombres entiers sont des nombres entiers positifs ou négatifs sans décimales. Par exemple :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">a = 5
b = -10</pre>



<ul class="wp-block-list">
<li>Les nombres à virgule flottante (<strong><em>float</em></strong>) : Les nombres à virgule flottante sont des nombres réels avec une partie décimale. Par exemple :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">c = 3.14
d = 2.0</pre>



<ul class="wp-block-list">
<li>Les chaînes de caractères (<strong><em>str</em></strong>) : Les chaînes de caractères sont des séquences de caractères qui peuvent contenir du texte, des chiffres et des symboles. Les chaînes de caractères sont délimitées par des guillemets simples ( ») ou des guillemets doubles («  »). Par exemple :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">e = 'Hello, world!' 
f = "Python is fun!"
</pre>



<ul class="wp-block-list" type="1" start="4">
<li>Les listes (<strong><em>list</em></strong>) : Les listes sont des collections ordonnées d&rsquo;éléments qui peuvent contenir différents types de données. Les éléments d&rsquo;une liste sont séparés par des virgules et sont entourés de crochets. Par exemple :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">g = [1, 2, 3, 4] 
h = ['apple', 'banana', 'cherry']
</pre>



<ul class="wp-block-list" type="1" start="5">
<li>Les tuples (<strong><em>tuple</em></strong>) : Les tuples sont des collections ordonnées d&rsquo;éléments similaires aux listes, mais les tuples sont immuables, ce qui signifie qu&rsquo;une fois qu&rsquo;un tuple est créé, il ne peut pas être modifié. Les éléments d&rsquo;un tuple sont séparés par des virgules et sont entourés de parenthèses. Par exemple :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">i = (1, 2, 3, 4) 
j = ('apple', 'banana', 'cherry')
</pre>



<ul class="wp-block-list" type="1" start="6">
<li>Les dictionnaires (<strong><em>dict</em></strong>) : Les dictionnaires sont des collections d&rsquo;éléments qui sont stockés sous forme de clé-valeur. Les éléments d&rsquo;un dictionnaire sont séparés par des virgules, les clés et les valeurs sont séparées par des deux-points et le dictionnaire est entouré d&rsquo;accolades. Par exemple :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">k = {'name': 'John', 'age': 30, 'city': 'New York'} </pre>



<p>En Python, les variables peuvent contenir des valeurs de différents types de données et les types de données peuvent être convertis d&rsquo;un type à un autre en fonction des besoins du programme.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-variables-et-type-de-donnees/">Python, variables et type de données</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/python-variables-et-type-de-donnees/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1556</post-id>	</item>
		<item>
		<title>Python, la brève histoire</title>
		<link>https://programmation.surleweb-france.fr/python-la-breve-histoire/</link>
					<comments>https://programmation.surleweb-france.fr/python-la-breve-histoire/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Mon, 06 Mar 2023 17:00:00 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[automatisation]]></category>
		<category><![CDATA[bibliothèques Python]]></category>
		<category><![CDATA[chatbots]]></category>
		<category><![CDATA[communauté open source]]></category>
		<category><![CDATA[développement web]]></category>
		<category><![CDATA[évolution]]></category>
		<category><![CDATA[frameworks web]]></category>
		<category><![CDATA[haut niveau]]></category>
		<category><![CDATA[histoire]]></category>
		<category><![CDATA[intelligence artificielle]]></category>
		<category><![CDATA[interprété]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[langage de programmation]]></category>
		<category><![CDATA[orienté objet]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[science des données]]></category>
		<category><![CDATA[traitement du langage naturel]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=1510</guid>

					<description><![CDATA[<p>Découvrez pourquoi Python est devenu un langage de programmation incontournable, utilisé dans de nombreuses industries telles que le développement Web, la science des données, l'automatisation et les jeux vidéo.</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/python-la-breve-histoire/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-la-breve-histoire/">Python, la brève histoire</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Avant de commencer une longue série d&rsquo;article sur le langage que je préfère (c&rsquo;est-à-dire Python), je vais commencer par une petite présentation simple.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="900" height="900" src="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/03/kisspng-python-logo-programmer-fierce-python-cliparts-5ab7bde206fb71.9462244415219911380286.png?resize=900%2C900&#038;ssl=1" alt="" class="wp-image-1511" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/03/kisspng-python-logo-programmer-fierce-python-cliparts-5ab7bde206fb71.9462244415219911380286.png?resize=1024%2C1024&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/03/kisspng-python-logo-programmer-fierce-python-cliparts-5ab7bde206fb71.9462244415219911380286.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/03/kisspng-python-logo-programmer-fierce-python-cliparts-5ab7bde206fb71.9462244415219911380286.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/03/kisspng-python-logo-programmer-fierce-python-cliparts-5ab7bde206fb71.9462244415219911380286.png?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/03/kisspng-python-logo-programmer-fierce-python-cliparts-5ab7bde206fb71.9462244415219911380286.png?w=1200&amp;ssl=1 1200w" sizes="(max-width: 900px) 100vw, 900px" /></figure></div>


<p>Python est un langage de programmation interprété, orienté objet et de haut niveau. Il a été créé en 1991 par Guido van Rossum, un programmeur néerlandais, alors qu&rsquo;il travaillait au Centre de Mathématiques et d&rsquo;Informatique de l&rsquo;Université de Amsterdam. Depuis sa création, Python a connu une croissance et une popularité constantes en raison de sa syntaxe simple, de sa lisibilité et de son orientation vers la communauté open source.</p>



<p>Voici quelques dates clés dans l&rsquo;histoire de Python :</p>



<ul class="wp-block-list">
<li>1991 : la première version de Python, Python 0.9.0, est publiée.</li>



<li>2000 : la version 2.0 de Python est publiée, avec de nouvelles fonctionnalités telles que les compréhensions de listes et les générateurs.</li>



<li>2008 : la version 3.0 de Python est publiée, avec des changements majeurs dans la syntaxe, la gestion des chaînes et l&rsquo;encodage Unicode.</li>



<li>2020 : la version 3.9 de Python est publiée, avec de nouvelles fonctionnalités telles que l&rsquo;opérateur de fusion de dictionnaire et la réorganisation des bibliothèques standard.</li>
</ul>



<p>Python est utilisé dans de nombreuses applications, y compris :</p>



<ul class="wp-block-list">
<li>Développement Web : Python est utilisé pour le développement de sites Web, de frameworks Web tels que <a href="https://www.djangoproject.com/" target="_blank" rel="noreferrer noopener">Django </a>et <a href="https://flask.palletsprojects.com/en/2.2.x/" target="_blank" rel="noreferrer noopener">Flask</a>, ainsi que pour la création d&rsquo;APIs.</li>



<li>Science des données : Python est largement utilisé dans l&rsquo;analyse de données, la modélisation statistique, l&rsquo;apprentissage automatique et l&rsquo;intelligence artificielle. Des bibliothèques populaires telles que <a href="https://numpy.org/" target="_blank" rel="noreferrer noopener">NumPy</a>, <a href="https://pandas.pydata.org/" target="_blank" rel="noreferrer noopener">Pandas</a>, <a href="https://scikit-learn.org/" target="_blank" rel="noreferrer noopener">Scikit-learn</a>, <a href="https://www.tensorflow.org/learn" target="_blank" rel="noreferrer noopener">TensorFlow </a>et <a href="https://keras.io/" target="_blank" rel="noreferrer noopener">Keras </a>sont toutes écrites en Python.</li>



<li>Automatisation : Python est utilisé pour l&rsquo;automatisation de tâches, telles que la création de scripts pour la gestion des fichiers et des répertoires, l&rsquo;envoi d&rsquo;e-mails et la manipulation de données.</li>



<li>Jeux vidéo : Python est utilisé pour le développement de jeux vidéo, notamment grâce à des bibliothèques telles que <a href="https://www.pygame.org/" target="_blank" rel="noreferrer noopener">Pygame </a>et <a href="https://pyopengl.sourceforge.net/" target="_blank" rel="noreferrer noopener">PyOpenGL</a>.</li>
</ul>



<p>En résumé, Python est un langage de programmation populaire, utilisé dans de nombreuses applications, y compris le développement Web, la science des données, l&rsquo;automatisation et les jeux vidéo. Avec une communauté open source active et une syntaxe simple, Python est un choix idéal pour les débutants en programmation ainsi que pour les développeurs expérimentés.</p>



<p>Au fil des années, Python a connu une évolution dans l&rsquo;utilisation de son langage, passant d&rsquo;un langage de programmation généraliste à un outil incontournable pour de nombreuses industries.</p>



<p>Voici quelques tendances et évolutions dans l&rsquo;utilisation de Python :</p>



<ul class="wp-block-list">
<li>Python est de plus en plus utilisé dans la science des données et l&rsquo;intelligence artificielle. Les bibliothèques Python telles que <a href="https://numpy.org/" target="_blank" rel="noreferrer noopener">NumPy</a>, <a href="https://pandas.pydata.org/" target="_blank" rel="noreferrer noopener">Pandas</a>, <a href="https://matplotlib.org/" target="_blank" rel="noreferrer noopener">Matplotlib</a>, <a href="https://www.tensorflow.org/learn" target="_blank" rel="noreferrer noopener">TensorFlow </a>, <a href="https://keras.io/" target="_blank" rel="noreferrer noopener">Keras </a>et <a href="https://pytorch.org/">PyTorch </a>sont devenues les outils de prédilection pour les chercheurs et les professionnels de la science des données et de l&rsquo;IA.</li>



<li>Python est également largement utilisé pour la création de chatbots, d&rsquo;assistants virtuels et d&rsquo;applications de traitement du langage naturel. Les bibliothèques comme <a href="https://www.nltk.org/" target="_blank" rel="noreferrer noopener">NLTK</a>, <a href="https://spacy.io/" target="_blank" rel="noreferrer noopener">Spacy </a>et <a href="https://textblob.readthedocs.io/en/dev/" target="_blank" rel="noreferrer noopener">TextBlob </a>ont permis de faciliter le traitement du langage naturel.</li>



<li>Python est utilisé pour la création de sites Web, de frameworks Web et d&rsquo;applications Web. <a href="https://www.djangoproject.com/" target="_blank" rel="noreferrer noopener">Django </a>et <a href="https://flask.palletsprojects.com/" target="_blank" rel="noreferrer noopener">Flask </a>sont deux exemples de frameworks Web populaires écrits en Python.</li>



<li>Python est également utilisé pour l&rsquo;automatisation de tâches et de processus métier. Les développeurs peuvent utiliser Python pour automatiser des tâches répétitives telles que la manipulation de fichiers et la création de rapports.</li>



<li>Python est également utilisé pour le développement de jeux vidéo, grâce à des bibliothèques telles que <a href="https://www.pygame.org/" target="_blank" rel="noreferrer noopener">Pygame </a>et <a href="https://pyopengl.sourceforge.net/" target="_blank" rel="noreferrer noopener">PyOpenGL</a>.</li>



<li>L&rsquo;utilisation de Python pour l&rsquo;Internet des Objets (IoT) est en augmentation. Les développeurs peuvent utiliser Python pour la création de capteurs, de dispositifs IoT et de protocoles de communication.</li>
</ul>



<p>En somme, Python est un langage de programmation polyvalent, largement utilisé dans de nombreuses industries. Son utilisation est en constante évolution, avec de nouvelles applications et de nouveaux outils qui continuent de voir le jour.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-la-breve-histoire/">Python, la brève histoire</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/python-la-breve-histoire/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1510</post-id>	</item>
		<item>
		<title>Python, les avantages</title>
		<link>https://programmation.surleweb-france.fr/python-les-avantages/</link>
					<comments>https://programmation.surleweb-france.fr/python-les-avantages/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Mon, 06 Mar 2023 17:00:00 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[apprentissage facile]]></category>
		<category><![CDATA[automatisation]]></category>
		<category><![CDATA[communauté open source]]></category>
		<category><![CDATA[développement web]]></category>
		<category><![CDATA[évolutivité]]></category>
		<category><![CDATA[flexibilité]]></category>
		<category><![CDATA[intelligence artificielle]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[jeux vidéo]]></category>
		<category><![CDATA[langage de programmation]]></category>
		<category><![CDATA[performances]]></category>
		<category><![CDATA[portabilité]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[science des données]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=1531</guid>

					<description><![CDATA[<p>Découvrez pourquoi Python est le langage de programmation idéal pour les débutants et les développeurs expérimentés avec sa syntaxe simple, sa communauté active, sa polyvalence dans différents domaines, sa flexibilité et portabilité, et ses performances évolutives de pointe.</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/python-les-avantages/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-les-avantages/">Python, les avantages</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Voici une petite présentation des avantages de Python comme langage de programmation. Cet article fait parti d&rsquo;un travail plus complet, vas vers le <a href="https://programmation.surleweb-france.fr/python-tous-les-articles-classes">sommaire</a>.</p>



<p>Il y a plusieurs avantages à apprendre le langage <a href="https://www.python.org/">Python </a>par rapport à d&rsquo;autres langages de programmation.</p>



<ul class="wp-block-list">
<li>Facilité d&rsquo;apprentissage : Python a une syntaxe simple et facile à apprendre, avec un nombre limité de mots-clés et une structure claire. Les débutants peuvent rapidement commencer à écrire du code Python et produire des résultats, ce qui en fait un choix populaire pour les débutants en programmation.</li>



<li>Communauté importante : Python dispose d&rsquo;une communauté open source importante et active, qui fournit des bibliothèques, des modules et des outils pour faciliter le développement de projets en Python. Cette communauté est également utile pour répondre aux questions, offrir du soutien et partager des connaissances, ce qui facilite l&rsquo;apprentissage et la résolution de problèmes.</li>



<li>Utilisation dans différents domaines : Python est largement utilisé dans de nombreux domaines, tels que la science des données, l&rsquo;IA, le développement Web, l&rsquo;automatisation, les jeux vidéo et l&rsquo;IoT. En apprenant Python, les développeurs ont accès à un large éventail d&rsquo;applications et peuvent choisir le domaine qui correspond le mieux à leurs intérêts et compétences.</li>



<li>Flexibilité et portabilité : Python est un langage de programmation interprété, ce qui signifie qu&rsquo;il n&rsquo;est pas nécessaire de compiler le code avant de l&rsquo;exécuter. De plus, Python est portable sur plusieurs systèmes d&rsquo;exploitation, ce qui signifie qu&rsquo;il peut être exécuté sur différentes plates-formes, ce qui le rend plus flexible et plus pratique pour les développeurs.</li>



<li>Évolutivité et performances : Python offre une grande évolutivité, avec des bibliothèques de pointe pour la gestion de données volumineuses et complexes, ainsi que des bibliothèques pour l&rsquo;optimisation des performances. De plus, Python peut être intégré à des langages de bas niveau, tels que C et C++, pour améliorer les performances et la vitesse d&rsquo;exécution.</li>
</ul>



<p>En somme, apprendre Python offre plusieurs avantages, notamment une facilité d&rsquo;apprentissage, une communauté importante et active, une utilisation dans différents domaines, une flexibilité et portabilité, ainsi que des performances et une évolutivité de pointe. Ces avantages en font un choix idéal pour les débutants en programmation ainsi que pour les développeurs expérimentés.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-les-avantages/">Python, les avantages</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/python-les-avantages/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1531</post-id>	</item>
		<item>
		<title>Python, créer des traductions pour son application</title>
		<link>https://programmation.surleweb-france.fr/python-creer-des-traductions-pour-son-application/</link>
					<comments>https://programmation.surleweb-france.fr/python-creer-des-traductions-pour-son-application/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Sat, 08 May 2021 09:32:22 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[gettext]]></category>
		<category><![CDATA[multilingue]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tradution]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=952</guid>

					<description><![CDATA[<p>Pour internationaliser son code python, la mise en place d'un appli Python multilingue facilement grâce à la librairie gettext</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/python-creer-des-traductions-pour-son-application/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-creer-des-traductions-pour-son-application/">Python, créer des traductions pour son application</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Afin de toucher un publique plus large, il est parfois utile d&rsquo;avoir une application traduite dans plusieurs langues. Le module <strong><em><a href="https://docs.python.org/fr/3/library/gettext.html" target="_blank" rel="noreferrer noopener">gettext </a></em></strong>de Python permet la mise en place de traduction facilement, le tout dans un environnement Linux.</p>



<h2 class="wp-block-heading">Mise en place d&rsquo;une traduction</h2>



<p>Pour montrer son fonctionnement, on va utiliser un exemple simple mais qui sera efficace, tout d&rsquo;abord, on s&rsquo;occupe de notre dossier de travail :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">mkdir -p traduction/src
nano traduction/src/main.py</pre>



<p>Et on copie le code suivant dans le fichier <strong><em>main.py</em></strong>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">def print_some_strings():
        print("Bonjour le monde")
        print("C'est une phrase traduite")

if __name__ == '__main__':
        print_some_strings()</pre>



<p>Les différentes traductions seront placées dans des dossiers, une branche pour une langue, dans notre cas, en français et en anglais :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">mkdir -p locales/fr/LC_MESSAGES
mkdir -p locales/en/LC_MESSAGES</pre>



<p>L&rsquo;arborescence devrait ressembler à cela :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="193" height="125" src="//i1.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-4.png" alt="" class="wp-image-953" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-4.png?w=193&amp;ssl=1 193w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-4.png?resize=150%2C97&amp;ssl=1 150w" sizes="(max-width: 193px) 100vw, 193px" /></figure></div>



<p>Une fois cela fait, nous allons nous concentrer sur notre script main.py, il va falloir :</p>



<ul class="wp-block-list"><li>importer le module</li><li>identifier les parties à traduire</li></ul>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import gettext

_ = gettext.gettext

def print_some_strings():
        print(_("Bonjour le monde"))
        print(_("C'est une phrase traduite"))

if __name__ == '__main__':
        print_some_strings()</pre>



<p>Sur la première ligne, nous reconnaissons l&rsquo;import du module, rien de compliqué, nous venons marquer le texte avec le « <strong>_</strong>« .</p>



<p>Maintenant, passons à l&rsquo;édition de nos différents fichiers, nous allons éditer plusieurs fichiers :</p>



<ul class="wp-block-list"><li>« <strong><em>.pot</em></strong> » est le patron de la traduction, c&rsquo;est un fichier sans traduction dans lequel sont listés les éléments à traduire</li><li>« <strong><em>.po</em></strong> » est le fichier de traduction dans lequel nous mettrons les traductions</li><li>« <strong><em>.mo</em></strong> » est la transcription du fichier précédent mais compréhensible par l&rsquo;application python</li></ul>



<p>Commençons par générer le fichier « <strong><em>.pot</em></strong> » :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">pygettext -d main -o locales/main.pot src/main.py</pre>



<p>Cela va générer notre fichier brut :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR &lt;EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2021-05-05 20:33+CEST\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME &lt;EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE &lt;LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"


#: src/main.py:13
msgid "Bonjour le monde"
msgstr ""

#: src/main.py:14
msgid "C'est une phrase traduite"
msgstr ""</pre>



<p>Tu peux déjà y mettre les adresses mail, il faut surtout remplacer <strong>CHARSET </strong>et <strong>ENCODING </strong>respectivement par <strong>UTF-8</strong> et <strong>8-bit</strong>.</p>



<p>On va générer le fichier pour chaque langue avec la commande suivante (à faire pour chaque langue, ici le français):</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">msginit -l fr -i locales/main.pot -o locales/fr/LC_MESSAGES/main.po</pre>



<p>Il faut mettre en place dans chacun de ces nouveaux fichiers les traductions, une fois cela fait, il nous reste à créer le <strong><em>.mo</em></strong> qui sera utilisé par l&rsquo;application :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">cd locales/fr/LC_MESSAGES # ou fr est à remplacer en fonction des langues
msgfmt main.po -o main.mo</pre>



<p>Maintenant, retournons au code Python, pour utiliser l&rsquo;une ou l&rsquo;autre traduction :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import gettext

en = gettext.translation('main', localedir='locales', languages=['en'])
en.install()
_ = en.gettext # en anglais
ngettext = en.ngettext

def print_some_strings():
        print(_("Bonjour le monde"))
        print(_("C'est une phrase traduite"))

if __name__ == '__main__':
        print_some_strings()</pre>



<p>Une fois exécuté, le résultat sera les phrases traduites.</p>



<h2 class="wp-block-heading">Mise à jour de la traduction</h2>



<p>Pour mettre à jour la traduction, bien entendu sans perdre celles déjà faite, après avoir modifié le fichier <strong><em>main.py</em></strong>, Lance la commande :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">pygettext -p locales -d main src/main.py
cd locales
msgmerge --update en/LC_MESSAGES/main.po main.pot</pre>



<p>Mettre en place la traduction, puis regénérer le fichier <strong><em>.mo </em></strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">cd fr/LC_MESSAGES/ # à faire pour chaque langue
msgfmt main.po -o main.mo</pre>



<h2 class="wp-block-heading">Cas de la pluralisation</h2>



<p>Nous pouvons prendre en compte la pluralisation dans la langue à traduire.</p>



<p>Nous allons continuer de prendre notre exemple, en y ajoutant une fonction pour illustrer ce cas :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import gettext

en = gettext.translation('main', localedir='locales', languages=['en'])
en.install()
_ = en.gettext # en anglais

def print_some_strings():
        print(_("Bonjour le monde"))
        print(_("C'est une phrase traduite"))
def print_some_plural_strings(num):
    message1 = ngettext('{0} homme', '{0} hommes', num)
    message2 = ngettext('Je possede {0} portable', 'Je possede {0} portables', num)

if __name__ == '__main__':
        print_some_plural_strings(1)
        print_some_plural_strings(5)</pre>



<p>La commande <strong>pygettext </strong>ne fonctionne pas dans mon cas pour générer le template (<strong><em>.pot</em></strong>), utilise la commande suivante :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">xgettext -L Python -o locales/main.pot src/main.py</pre>



<p>Cela va générer le nouveau template :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR &lt;EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-08 10:26+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME &lt;EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE &lt;LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

#: src/main.py:9
msgid "Bonjour le monde"
msgstr ""

#: src/main.py:10
msgid "C'est une phrase traduite"
msgstr ""

#: src/main.py:12
#, python-brace-format
msgid "{0} homme"
msgid_plural "{0} hommes"
msgstr[0] ""
msgstr[1] ""

#: src/main.py:13
#, python-brace-format
msgid "Je possede {0} portable"
msgid_plural "Je possede {0} portables"
msgstr[0] ""
msgstr[1] ""</pre>



<p>Nous allons fusionner ce nouveau template pour obtenir notre nouveau fichier .po pour chaque langue :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Si besoin se mettre dans locales avec cd locales
msgmerge --update fr/LC_MESSAGES/main.po main.pot # remplacer fr par sa langue</pre>



<p>Une fois cela fait, tu peux traduire les fichiers pour chaque langue.</p>



<p>Pour finir, nous mettrons à jour les fichiers <strong><em>.mo</em></strong> :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># faire en fonction de la langue
cd locales/fr/LC_MESSAGES
msgfmt main.po -o main.mo</pre>



<p>Une fois cela fait, en lançant le script, tu devrais obtenir :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="657" height="109" src="//i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-5.png" alt="" class="wp-image-957" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-5.png?w=657&amp;ssl=1 657w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-5.png?resize=300%2C50&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-5.png?resize=150%2C25&amp;ssl=1 150w" sizes="(max-width: 657px) 100vw, 657px" /></figure></div>



<p>Si il y a une erreur dans le fichier .po de langue qui s&rsquo;affiche, le terminal indiquera une erreur dans le script main.py sans préciser que l&rsquo;erreur vient de l&rsquo;autre fichier.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Bien que cela peut paraître fastidieux, il est simple de mettre en place une appli multilingue en python grâce à la librairie <strong><em>gettext</em></strong>. Celle-ci est également disponible dans d&rsquo;autres langage.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-creer-des-traductions-pour-son-application/">Python, créer des traductions pour son application</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/python-creer-des-traductions-pour-son-application/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">952</post-id>	</item>
		<item>
		<title>Python, environnement virtuel</title>
		<link>https://programmation.surleweb-france.fr/python-environnement-virtuel/</link>
					<comments>https://programmation.surleweb-france.fr/python-environnement-virtuel/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Wed, 05 May 2021 14:42:29 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[environnement]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[virtualenv]]></category>
		<category><![CDATA[virtuel]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=942</guid>

					<description><![CDATA[<p>La mise en place et l'utilisation d'un environnement virtuel pour travailler un projet Python est simple et incontournable que ce soit pour soi ou un travail en équipe</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/python-environnement-virtuel/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-environnement-virtuel/">Python, environnement virtuel</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Le langage Python est l&rsquo;un des plus élégant et simple à appréhender. C&rsquo;est un langage sans limite qui permet de réaliser un nombre impressionnant de projet, que ce soit de l&rsquo;application web, à la data-science en passant par des applications bureautiques. Ce nombre de projet, le nombre de programmeur ainsi que le nombre de module, de versions disponibles font qu&rsquo;il peut rapidement devenir complexe de travailler sur différents projets. La mise en place d&rsquo;un<a href="https://wiki.archlinux.fr/Python/Environnement_virtuel" target="_blank" rel="noreferrer noopener"> environnement virtuel</a> va permettre de résoudre ses problèmes.</p>



<h2 class="wp-block-heading">Pourquoi utiliser un environnement virtuel</h2>



<p>Comme je viens de l&rsquo;écrire, les problèmes peuvent devenir de plus en plus nombreux en fonction de différents facteurs :</p>



<ul class="wp-block-list"><li>le nombre de programmeur avec des versions installées de Python ou des modules différents</li><li>la mise en place de système de test</li><li>le maintien à jour (ou pas) des modules</li><li>la nécessité d&rsquo;avoir des versions de module différent en fonction de l&rsquo;application</li></ul>



<p>Et j&rsquo;en oublie certainement.</p>



<p>La mise en place d&rsquo;un environnement virtuel va permettre de régler l&rsquo;ensemble de ces problèmes.</p>



<p>Il va permettre d&rsquo;isoler son projet (son application) de l&rsquo;installation système, on aura donc (si on le souhaite) :</p>



<ul class="wp-block-list"><li>différents environnements ou python disponible sans avoir à tout réinstaller</li><li>des modules pouvant avoir des versions différentes en fonctions des environnement</li><li>un partage simplifier entre programmeur notamment en utilisant un dépot GIt qui contiendra un fichier (<em><strong>requirements.txt</strong></em>) qui listera les modules et les versions nécessaires pour le projet Python.</li></ul>



<p>La mise à jour du système d&rsquo;exploitation ne mettra pas à jours les modules des environnements, on pourra donc avoir un module en version 2 sur l&rsquo;environnement et ce même module en version 3 sur le système.</p>



<p>De plus, même si cela n&rsquo;est pas un argument en soi, la majorité des développeurs travaillent avec un environnement virtuel.</p>



<h2 class="wp-block-heading">Mise en place d&rsquo;un environnement virtuel</h2>



<p>Beaucoup d&rsquo;IDE (PyCharm ou visual Studio) bénéficie de leur propre moyen de mettre en place un environnement virtuel. Je verrai ici, la mise ne place pour un système linux (debian) en ligne de commande. </p>



<h3 class="wp-block-heading">Installation de virtualenv</h3>



<p>Dans mon cas, j&rsquo;utilise l&rsquo;outil <em><strong><a href="https://pypi.org/project/virtualenv/" target="_blank" rel="noreferrer noopener">virtualenv</a></strong></em>, celui-ci est généralement déjà installé. Si il n&rsquo;est pas présent, l&rsquo;installation se fait :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo apt install virtualenv</pre>



<h3 class="wp-block-heading">Création de l&rsquo;environnement virtuel</h3>



<p>La création d&rsquo;un environnement se fait simplement en tapant la commande à la racine de son projet :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">virtualenv -p python3 env</pre>



<h3 class="wp-block-heading">Activation et désactivation de l&rsquo;environnement</h3>



<p>Cela va créer l&rsquo;environnement, mais pour y travailler, il va falloir l&rsquo;activer :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">source env/bin/activate</pre>



<p>Nous voyons que nous sommes bien dans l&rsquo;environnement virtuel avec le nom de cet environnement qui apparaît à gauche :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="508" height="33" src="//i2.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-1.png" alt="" class="wp-image-943" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-1.png?w=508&amp;ssl=1 508w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-1.png?resize=300%2C19&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-1.png?resize=150%2C10&amp;ssl=1 150w" sizes="auto, (max-width: 508px) 100vw, 508px" /></figure></div>



<p>Pour le désactiver, il suffit de taper :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">deactivate</pre>



<p>Pour visualiser de changement d&rsquo;environnement, tu peux voir l&rsquo;image qui sui :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="512" height="104" src="//i1.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-2.png" alt="" class="wp-image-944" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-2.png?w=512&amp;ssl=1 512w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-2.png?resize=300%2C61&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-2.png?resize=150%2C30&amp;ssl=1 150w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure></div>



<p>Avec la première commande, on voit que le python3 se situe bien dans /usr/bin (soit sur le système, la troisième commande permet de visualiser la mise en place de la virtualisation.</p>



<h3 class="wp-block-heading">Installer, supprimer et lister les modules disponibles</h3>



<p>Notre nouvel environnement créé, il est vierge de tout module, pour lister les modules disponibles, une fois l&rsquo;environnement activé :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">pip freeze</pre>



<p>Qui retournera les modules :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="446" height="51" src="//i2.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-3.png" alt="" class="wp-image-945" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-3.png?w=446&amp;ssl=1 446w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-3.png?resize=300%2C34&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/05/image-3.png?resize=150%2C17&amp;ssl=1 150w" sizes="auto, (max-width: 446px) 100vw, 446px" /></figure></div>



<p>On vois qu&rsquo;il n&rsquo;y a qu&rsquo;un seul module d&rsquo;installer, d&rsquo;ailleurs, je t&rsquo;invite à lire <a href="https://qastack.fr/programming/39577984/what-is-pkg-resources-0-0-0-in-output-of-pip-freeze-command" target="_blank" rel="noreferrer noopener">cette page</a> qui explique la présence de ce module. Il est possible de rediriger le résultat de cette commande vers un fichier <strong><em>requirements.txt</em></strong>. D&rsquo;ailleurs, il s&rsquo;agit d&rsquo;un fichier important pour lister et installer facilement les modules.</p>



<p>La création de ce fichier ce fait :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">pip freeze > requirements.txt</pre>



<p>Pour installer un module, on utilise le module <strong><em>pip</em></strong> :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">pip install &lt;nom_module></pre>



<p>Pour installer les modules inscrits dans le fichiers <strong><em>requirements.txt</em></strong> :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">pip insatll -r requirements.txt</pre>



<p>Pour supprimer un module, on utilise également la module pip :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">pip uninstall &lt;nom_module></pre>



<h2 class="wp-block-heading">Conclusion</h2>



<p>En quelques lignes, la mise en place d&rsquo;un environnement virtuel se fait facilement et vous permettra de disposer d&rsquo;un espace de travail isolé de votre système.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-environnement-virtuel/">Python, environnement virtuel</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/python-environnement-virtuel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">942</post-id>	</item>
		<item>
		<title>Python, envoyer un mail</title>
		<link>https://programmation.surleweb-france.fr/python-envoyer-un-mail/</link>
					<comments>https://programmation.surleweb-france.fr/python-envoyer-un-mail/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Sat, 01 May 2021 15:02:28 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[envoi]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[smtp]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=927</guid>

					<description><![CDATA[<p>L'envoie d'un beau mail par python se fait en ajoutant quelques lignes à son script python.</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/python-envoyer-un-mail/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-envoyer-un-mail/">Python, envoyer un mail</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Comme il peut être utile d&rsquo;envoyer des mails dans des scripts, voilà une méthode simple à mettre en place pour l&rsquo;envoi de mail à partir d&rsquo;une adresse mail déjà existante.</p>



<p>Pour commencer, il faut une adresse mail dont le fournisseur fourni les informations de connexion aux serveurs SMTP.</p>



<p>Voici la liste des différents serveur SMTP (vu <a href="https://www.serversmtp.com/fr/liste-serveur-smtp/" target="_blank" rel="noreferrer noopener">ici</a>) :</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>9 Telecom</strong></td><td>Neuf.fr</td><td>smtp.neuf.fr</td></tr><tr><td><strong>Alice</strong></td><td>Aliceadsl.fr</td><td>smtp.aliceadsl.fr</td></tr><tr><td><strong>AOL</strong></td><td>Aol.com</td><td>smtp.aol.com</td></tr><tr><td><strong>AT&amp;T</strong></td><td>Att.net</td><td>outbound.att.net</td></tr><tr><td><strong>Bluewin</strong></td><td>Bluewin.ch</td><td>smtpauths.bluewin.ch</td></tr><tr><td><strong>Bouygtel</strong></td><td>Bouygtel.fr</td><td>smtp.bouygtel.fr</td></tr><tr><td><strong>Club Internet</strong></td><td>Club-internet.fr</td><td>mail.club-internet.fr</td></tr><tr><td><strong>Free</strong></td><td>Free.fr</td><td>smtp.free.fr</td></tr><tr><td><strong>Gmail</strong></td><td>Gmail.com</td><td>smtp.gmail.com</td></tr><tr><td><strong>IFra</strong></td><td>Ifrance.fr</td><td>smtp.ifrance.fr</td></tr><tr><td><strong>Hotmail</strong></td><td>Hotmail.com</td><td>smtp.live.com</td></tr><tr><td><strong>LaPoste</strong></td><td>Laposte.fr</td><td>smtp.laposte.fr</td></tr><tr><td><strong>NetCourrier</strong></td><td>Netcourrier.com</td><td>smtp.netcourrier.com</td></tr><tr><td><strong>O2</strong></td><td>o2.com</td><td>smtp.o2.com</td></tr><tr><td><strong>Orange</strong></td><td>Orange.fr</td><td>smtp.orange.fr</td></tr><tr><td><strong>Outlook.com (former Hotmail)</strong></td><td>Outlook.com</td><td>smtp.live.com</td></tr><tr><td><strong>Sympatico</strong></td><td>Sympatico.ca</td><td>smtphm.sympatico.ca</td></tr><tr><td><strong>Tiscali</strong></td><td>Tiscali.fr</td><td>smtp.tiscali.fr</td></tr><tr><td><strong>Verizon</strong></td><td>Verizon.net</td><td>outgoing.verizon.net</td></tr><tr><td><strong>Voila</strong></td><td>Voila.fr</td><td>smtp.voila.fr</td></tr><tr><td><strong>Wanadoo</strong></td><td>Wanadoo.fr</td><td>smtp.wanadoo.fr</td></tr><tr><td><strong>Yahoo</strong></td><td>Yahoo.com</td><td>mail.yahoo.com</td></tr></tbody></table></figure>



<p>Avec cela, tu auras besoin du port d&rsquo;accès, de manière général, la connexion passera par du <a href="https://support.hostpoint.ch/fr/produits/ssl/questions-frequentes-sur-ssl/comment-fonctionne-une-connexion-ssl#:~:text=SSL%20signifie%20Secure%20Sockets%20Layer,au%20lieu%20de%20http%3A%2F%2F." target="_blank" rel="noreferrer noopener">SSL</a>, le port par défaut est <strong>465</strong> (lire cet <a href="https://kinsta.com/fr/blog/port-smtp/" target="_blank" rel="noreferrer noopener">article </a>pour obtenir plus d&rsquo;informations sur les ports).</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Cependant, il peut être nécessaire d&rsquo;autoriser les connexion tiers au serveur du fournisseur, par exemple pour les adresses gmail</p></blockquote>



<h2 class="wp-block-heading">Le code Python</h2>



<p>Pour l&rsquo;envoi de mail (avec un minimum de style) : tu pourras suivre ce schéma :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import smtplib, ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

smtp_address = 'adresse-serveur-smtp'

smtp_port = 465

email_address = 'identifiant-mail'
email_password = 'mot-de-passe-mail'

email_receiver = 'mail-destinataire'

# on crée un e-mail
message = MIMEMultipart("alternative")
# on ajoute un sujet
message["Subject"] = "Objet de mon mail"
# un émetteur
message["From"] = email_address
# un destinataire
message["To"] = email_receiver

# on crée un texte et sa version HTML
texte = '''
Voici le contenu de mon mail au format texte
'''

html = '''
&lt;html>
&lt;body>
&lt;h1>Mon corps du mail&lt;/h1
&lt;div>Je suis le &lt;i>corps&lt;/i> du &lt;b>mail&lt;/b>&lt;/div>
&lt;/body>
&lt;/html>
'''

# on crée deux éléments MIMEText 
texte_mime = MIMEText(texte, 'plain')
html_mime = MIMEText(html, 'html')

# on attache ces deux éléments 
message.attach(texte_mime)
message.attach(html_mime)

context = ssl.create_default_context()

with smtplib.SMTP_SSL(smtp_address, smtp_port, context=context) as server:
  # connexion au compte
  server.login(email_address, email_password)
  # envoi du mail
  server.sendmail(email_address, email_receiver, message.as_string())
</pre>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Voilà comment envoyer un mail en ajoutant quelques lignes dans tes scripts.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-envoyer-un-mail/">Python, envoyer un mail</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/python-envoyer-un-mail/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">927</post-id>	</item>
		<item>
		<title>Un microscope à base de Raspberry</title>
		<link>https://programmation.surleweb-france.fr/un-microscope-a-base-de-raspberry/</link>
					<comments>https://programmation.surleweb-france.fr/un-microscope-a-base-de-raspberry/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Tue, 09 Jun 2020 17:04:13 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[microscope]]></category>
		<category><![CDATA[microscoPy]]></category>
		<category><![CDATA[picamera]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=674</guid>

					<description><![CDATA[<p>Découverte de l'infiniment petit grâce à un microscope à base d'arduino, de raspberry pour une réalisation fun, peu coûteuse et qui éveillera la curiosité</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/un-microscope-a-base-de-raspberry/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/un-microscope-a-base-de-raspberry/">Un microscope à base de Raspberry</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Voici une réalisation qui amusera et éveillera la curiosité des petits comme des plus grands. Qui n&rsquo;a jamais joué avec un microscope, alors quand celui-ci permet de voir l&rsquo;infiniment petit pour un budget restreint avec la même qualité qu&rsquo;un microscope professionnel, pourquoi s&rsquo;en priver.</p>



<p>Je n&rsquo;ai pas construit ce microscope par manque de temps et de place (ma femme risquerait de devenir folle si je faisais tout ce qui me tente).</p>



<p>Pour la fabrication de ce microscope, <a rel="noreferrer noopener" href="https://amzn.to/2zi9rqe" target="_blank">un raspberry</a>, un <a rel="noreferrer noopener" href="https://amzn.to/3hfS3DU" target="_blank">picamera</a> et quelques composants électroniques te suffiront.</p>



<p>Le créateur <a rel="noreferrer noopener" href="https://researcher.watson.ibm.com/researcher/view.php?person=zurich-YTE" target="_blank">Yuskel Temiz</a> a eu l&rsquo;idée de remplacer son microscope (à priori pas très performant) par le MicroscoPy de sa création. Son microscope peut voir des éléments de l&rsquo;ordre de 10 microns pour un budget avoisinant les 300 €.</p>



<p>Ce qui est bien, c&rsquo;est qu&rsquo;il a tout mis en licence libre. Les plans, les fichiers STL (pour l&rsquo;impression 3D), les logiciels sont disponibles <a rel="noreferrer noopener" href="https://github.com/IBM/MicroscoPy" target="_blank">ici</a>.</p>



<p>Pour la liste des matériels :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="900" height="469" src="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/06/liste-matériel-microscoPy.png?resize=900%2C469&#038;ssl=1" alt="La liste des matériels pour fabriquer son microscope à base d'un raspberry" class="wp-image-682" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/06/liste-matériel-microscoPy.png?resize=1024%2C534&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/06/liste-matériel-microscoPy.png?resize=300%2C156&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/06/liste-matériel-microscoPy.png?resize=768%2C400&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/06/liste-matériel-microscoPy.png?resize=1536%2C800&amp;ssl=1 1536w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/06/liste-matériel-microscoPy.png?resize=150%2C78&amp;ssl=1 150w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/06/liste-matériel-microscoPy.png?w=2000&amp;ssl=1 2000w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/06/liste-matériel-microscoPy.png?w=1800&amp;ssl=1 1800w" sizes="auto, (max-width: 900px) 100vw, 900px" /><figcaption>La liste des matériels pour fabriquer son microscope à base d&rsquo;un raspberry</figcaption></figure></div>



<p>Voici une petite vidéo de présentation :</p>



<figure class="wp-block-embed-youtube aligncenter wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="IBM open sources $300 fully-functional LEGO® microscope design" width="900" height="506" src="https://www.youtube.com/embed/PBSYnk9T4o4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p>Cette article a été vu sur <a href="https://korben.info/construire-microscope.html" target="_blank" rel="noreferrer noopener">korben.info</a>, sinon pour les anglophones, <a href="https://medium.com/@IBMResearch/ibm-open-sources-300-fully-functional-lego-microscope-design-248a6cdc81bf" target="_blank" rel="noreferrer noopener">une page</a> un petit peu plus complète.</p>



<p></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/un-microscope-a-base-de-raspberry/">Un microscope à base de Raspberry</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/un-microscope-a-base-de-raspberry/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">674</post-id>	</item>
	</channel>
</rss>
