<?xml
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://edualc.be/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Edualc's Blog</title>
	<link>https://edualc.be/</link>
	<description></description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://edualc.be/spip.php?page=backend" rel="self" type="application/rss+xml" />



	

	



<item xml:lang="fr">
		<title>API : D&#233;finition et Guide Complet</title>
		<link>https://edualc.be/spip.php?article83</link>
		<guid isPermaLink="true">https://edualc.be/spip.php?article83</guid>
		<dc:date>2026-07-13T08:03:19Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>edualc</dc:creator>







		<description>
&lt;p&gt;https://www.kern-it.be/fr/definitions/api/ &lt;br class='autobr' /&gt;
https://developer.mozilla.org/fr/docs/Learn_web_development/Extensions/Client-side_APIs/Introduction &lt;br class='autobr' /&gt;
https://fastapi.tiangolo.com/fr/&lt;/p&gt;


-
&lt;a href="https://edualc.be/spip.php?rubrique5" rel="directory"&gt;D&#233;veloppement&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;a href=&#034;https://www.kern-it.be/fr/definitions/api/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://www.kern-it.be/fr/definitions/api/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://developer.mozilla.org/fr/docs/Learn_web_development/Extensions/Client-side_APIs/Introduction&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://developer.mozilla.org/fr/docs/Learn_web_development/Extensions/Client-side_APIs/Introduction&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://fastapi.tiangolo.com/fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://fastapi.tiangolo.com/fr/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>uuid c'est quoi</title>
		<link>https://edualc.be/spip.php?article82</link>
		<guid isPermaLink="true">https://edualc.be/spip.php?article82</guid>
		<dc:date>2026-07-13T07:56:37Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>edualc</dc:creator>







		<description>
&lt;p&gt;https://developer.mozilla.org/fr/docs/Glossary/UUID &lt;br class='autobr' /&gt;
Un UUID (Universally Unique IDentifier) est un identifiant informatique unique &#224; l'&#233;chelle mondiale, g&#233;n&#233;r&#233; de mani&#232;re d&#233;centralis&#233;e sans n&#233;cessiter d'autorit&#233; centrale. Il se pr&#233;sente g&#233;n&#233;ralement sous la forme d'une cha&#238;ne alphanum&#233;rique de 36 caract&#232;res s&#233;par&#233;s par des tirets (ex : 158c9998-18da-4bef-a8db-4891b1736574)&lt;/p&gt;


-
&lt;a href="https://edualc.be/spip.php?rubrique5" rel="directory"&gt;D&#233;veloppement&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;a href=&#034;https://developer.mozilla.org/fr/docs/Glossary/UUID&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://developer.mozilla.org/fr/docs/Glossary/UUID&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Un UUID (Universally Unique IDentifier) est un identifiant informatique unique &#224; l'&#233;chelle mondiale, g&#233;n&#233;r&#233; de mani&#232;re d&#233;centralis&#233;e sans n&#233;cessiter d'autorit&#233; centrale. Il se pr&#233;sente g&#233;n&#233;ralement sous la forme d'une cha&#238;ne alphanum&#233;rique de 36 caract&#232;res s&#233;par&#233;s par des tirets (ex : 158c9998-18da-4bef-a8db-4891b1736574)&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les formulaires</title>
		<link>https://edualc.be/spip.php?article81</link>
		<guid isPermaLink="true">https://edualc.be/spip.php?article81</guid>
		<dc:date>2026-07-13T06:46:16Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>edualc</dc:creator>







		<description>
&lt;p&gt;Le r&#244;le de Django dans les formulaires
&lt;br class='autobr' /&gt;
La gestion des formulaires est une affaire complexe.
&lt;br class='autobr' /&gt;
La fonctionnalit&#233; des formulaires de Django peut simplifier et automatiser de larges portions de ce travail et peut aussi le faire de mani&#232;re plus s&#233;curis&#233;e que la plupart des programmeurs ne pourraient le faire en &#233;crivant leur propre code. &lt;br class='autobr' /&gt;
Django g&#232;re trois parties distinctes du travail induit par les formulaires : &lt;br class='autobr' /&gt; pr&#233;paration et restructuration des donn&#233;es en vue de leur pr&#233;sentation (&#8230;)&lt;/p&gt;


-
&lt;a href="https://edualc.be/spip.php?rubrique15" rel="directory"&gt;Django&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Le r&#244;le de Django dans les formulaires&lt;br class='autobr' /&gt;
La gestion des formulaires est une affaire complexe.&lt;br class='autobr' /&gt;
La fonctionnalit&#233; des formulaires de Django peut simplifier et automatiser de larges portions de ce travail et peut aussi le faire de mani&#232;re plus s&#233;curis&#233;e que la plupart des programmeurs ne pourraient le faire en &#233;crivant leur propre code.&lt;/p&gt;
&lt;p&gt;Django g&#232;re trois parties distinctes du travail induit par les formulaires :&lt;/p&gt;
&lt;p&gt; pr&#233;paration et restructuration des donn&#233;es en vue de leur pr&#233;sentation&lt;/p&gt;
&lt;p&gt; cr&#233;ation des formulaires HTML pour les donn&#233;es&lt;/p&gt;
&lt;p&gt; r&#233;ception et traitement des formulaires et des donn&#233;es envoy&#233;s par le client&lt;/p&gt;
&lt;p&gt;Il est possible d'&#233;crire du code qui fait tout cela manuellement, mais Django peut s'en charger &#224; votre place.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Django admin</title>
		<link>https://edualc.be/spip.php?article79</link>
		<guid isPermaLink="true">https://edualc.be/spip.php?article79</guid>
		<dc:date>2026-07-11T14:09:55Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>edualc</dc:creator>







		<description>
&lt;p&gt;ADMIN &lt;br class='autobr' /&gt;
Django admin &lt;br class='autobr' /&gt;
https://docs.djangoproject.com/fr/5.2/ref/contrib/admin/ &lt;br class='autobr' /&gt;
grappelli admin &lt;br class='autobr' /&gt;
http://www.grappelliproject.com/
&lt;br class='autobr' /&gt;
https://django-grappelli.readthedocs.io/
&lt;br class='autobr' /&gt;
https://github.com/sehmaschine/django-grappelli &lt;br class='autobr' /&gt;
pip install django-grappelli &lt;br class='autobr' /&gt;
Open settings.py and &lt;br class='autobr' /&gt;
* add grappelli to your INSTALLED_APPS (before django.contrib.admin) : &lt;br class='autobr' /&gt;
INSTALLED_APPS = (
&lt;br class='autobr' /&gt; 'grappelli',
&lt;br class='autobr' /&gt; 'django.contrib.admin',
&lt;br class='autobr' /&gt;
) &lt;br class='autobr' /&gt;
* Add the request context processor &lt;br class='autobr' /&gt;
TEMPLATES = [
&lt;br class='autobr' /&gt; ... (&#8230;)&lt;/p&gt;


-
&lt;a href="https://edualc.be/spip.php?rubrique15" rel="directory"&gt;Django&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;ADMIN&lt;/p&gt;
&lt;p&gt;Django admin&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://docs.djangoproject.com/fr/5.2/ref/contrib/admin/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://docs.djangoproject.com/fr/5.2/ref/contrib/admin/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;grappelli admin&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;http://www.grappelliproject.com/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://www.grappelliproject.com/&lt;/a&gt;&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://django-grappelli.readthedocs.io/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://django-grappelli.readthedocs.io/&lt;/a&gt;&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://github.com/sehmaschine/django-grappelli&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/sehmaschine/django-grappelli&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;pip install django-grappelli&lt;/p&gt;
&lt;p&gt;Open settings.py and&lt;/p&gt;
&lt;p&gt;* add grappelli to your INSTALLED_APPS (before django.contrib.admin) :&lt;/p&gt;
&lt;p&gt;INSTALLED_APPS = (&lt;br class='autobr' /&gt; 'grappelli',&lt;br class='autobr' /&gt; 'django.contrib.admin',&lt;br class='autobr' /&gt;
)&lt;/p&gt;
&lt;p&gt;* Add the request context processor&lt;/p&gt;
&lt;p&gt;TEMPLATES = [&lt;br class='autobr' /&gt; &lt;i&gt;&lt;br class='autobr' /&gt; ...&lt;br class='autobr' /&gt; 'OPTIONS' : &lt;i&gt;&lt;br class='autobr' /&gt; 'context_processors' : [&lt;br class='autobr' /&gt; ...&lt;br class='autobr' /&gt; 'django.template.context_processors.request',&lt;br class='autobr' /&gt; ...&lt;br class='autobr' /&gt; ],&lt;br class='autobr' /&gt; &lt;/i&gt;,&lt;br class='autobr' /&gt; &lt;/i&gt;,&lt;br class='autobr' /&gt;
]&lt;/p&gt;
&lt;p&gt;* Ajouter STATIC_ROOT&lt;/p&gt;
&lt;p&gt;STATIC_ROOT = 'static_root/'&lt;/p&gt;
&lt;p&gt;Open urls.py and&lt;/p&gt;
&lt;p&gt;* Add URL-patterns for grappelli before admin :&lt;/p&gt;
&lt;p&gt;urlpatterns = [&lt;br class='autobr' /&gt; path('grappelli/', include('grappelli.urls')), # grappelli URLS&lt;br class='autobr' /&gt; path('admin/', admin.site.urls), # admin site&lt;br class='autobr' /&gt;
]&lt;/p&gt;
&lt;p&gt;Collect the media files :&lt;/p&gt;
&lt;p&gt;python manage.py collectstatic&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>adresses</title>
		<link>https://edualc.be/spip.php?article77</link>
		<guid isPermaLink="true">https://edualc.be/spip.php?article77</guid>
		<dc:date>2026-07-11T13:50:44Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>edualc</dc:creator>







		<description>
&lt;p&gt;https://www.flickr.com/people/edualc-be/ &lt;br class='autobr' /&gt;
https://cscircles.cemc.uwaterloo.ca/fr/ &lt;br class='autobr' /&gt;
https://docs.djangoproject.com/en/3.2/ &lt;br class='autobr' /&gt;
https://www.afpy.org/ &lt;br class='autobr' /&gt;
https://vpython.org/ &lt;br class='autobr' /&gt;
https://fr.acervolima.com/ &lt;br class='autobr' /&gt;
Super https://www.lemondeinformatique.fr/actualites/lire-6-formations-en-ligne-pour-apprendre-python-74349.html &lt;br class='autobr' /&gt;
https://www.lesnumeriques.com/telecharger/odrive-35824 &lt;br class='autobr' /&gt; 000 - DJANGOGIRLS &lt;br class='autobr' /&gt;
https://tutorial.djangogirls.org/fr/django_models/ (&#8230;)&lt;/p&gt;


-
&lt;a href="https://edualc.be/spip.php?rubrique15" rel="directory"&gt;Django&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;a href=&#034;https://www.flickr.com/people/edualc-be/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.flickr.com/people/edualc-be/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://cscircles.cemc.uwaterloo.ca/fr/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://cscircles.cemc.uwaterloo.ca/fr/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://docs.djangoproject.com/en/3.2/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://docs.djangoproject.com/en/3.2/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://www.afpy.org/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.afpy.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://vpython.org/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://vpython.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://fr.acervolima.com/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://fr.acervolima.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Super&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://www.lemondeinformatique.fr/actualites/lire-6-formations-en-ligne-pour-apprendre-python-74349.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.lemondeinformatique.fr/actualites/lire-6-formations-en-ligne-pour-apprendre-python-74349.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://www.lesnumeriques.com/telecharger/odrive-35824&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.lesnumeriques.com/telecharger/odrive-35824&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; 000 - DJANGOGIRLS&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://tutorial.djangogirls.org/fr/django_models/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://tutorial.djangogirls.org/fr/django_models/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://github.com/ggcarrots/django-carrots/tree/master/source&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/ggcarrots/django-carrots/tree/master/source&lt;/a&gt;&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://docs.djangoproject.com/en/4.0/topics/i18n/translation/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://docs.djangoproject.com/en/4.0/topics/i18n/translation/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;link rel=&#034;stylesheet&#034; href='https://edualc.be/{% static 'monsite/styles.css' %}' /&gt;&lt;br class='autobr' /&gt;
&lt;link rel=&#034;stylesheet&#034; href=&#034;https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css&#034; integrity=&#034;sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2&#034; crossorigin=&#034;anonymous&#034;&gt;&lt;/p&gt;
&lt;p&gt;Maxi photos&lt;br class='autobr' /&gt;
Express (avenue Paul Pastur, 179/A &#224; 6032 Mont-sur-Marchienne, 071 366107)&lt;/p&gt;
&lt;p&gt;La mouche &#224; miel 0471/371.316&lt;br class='autobr' /&gt;
Guepes et frelons Basse Sambre 0472/285.408&lt;br class='autobr' /&gt;
P.Nuisibles - Gu&#234;pes et Frelons. 0486/098.818&lt;/p&gt;
&lt;p&gt;source /home/jnde6668/virtualenv/app-wagtail/3.11/bin/activate &amp;&amp; cd /home/jnde6668/app-wagtail&lt;/p&gt;
&lt;p&gt;source /home/jnde6668/virtualenv/EdualcBlog/3.12/bin/activate &amp;&amp; cd /home/jnde6668/EdualcBlog&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>D&#233;veloppement 12 nov 2025</title>
		<link>https://edualc.be/spip.php?article76</link>
		<guid isPermaLink="true">https://edualc.be/spip.php?article76</guid>
		<dc:date>2026-07-11T13:49:19Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>edualc</dc:creator>







		<description>
&lt;p&gt;D&#233;veloppement 12 nov 2025 &lt;br class='autobr' /&gt;
o2switch - Edualc.be Base de donn&#233;e PostgreSQL jnde6668_edualc PostgreSQL 9.6.22 lanc&#233; sur 127.0.0.1:5432 &#8212; Vous &#234;tes connect&#233; avec le profil &#171; jnde6668 &#187; Aucune table trouv&#233;e. &lt;br class='autobr' /&gt;
edualc.be &#8212;&gt; donne acc&#232;s au slip. /ecrire connection : admin u&#8212;y edualc.jnde6668.odns.fr &#8212;&gt; donne acc&#232;s au slip /ecrire	connection : admin u&#8212;y jnde6668.odns.fr &#8212;&gt; donne acc&#232;s au mediawiki connection : edualc trop@lO#wiK &lt;br class='autobr' /&gt;
Applications python &lt;br class='autobr' /&gt;
Cr&#233;ation d'une web application &lt;br class='autobr' /&gt;
* (&#8230;)&lt;/p&gt;


-
&lt;a href="https://edualc.be/spip.php?rubrique15" rel="directory"&gt;Django&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;D&#233;veloppement 12 nov 2025&lt;/p&gt;
&lt;p&gt;o2switch - Edualc.be&lt;/p&gt;
&lt;p&gt;Base de donn&#233;e PostgreSQL jnde6668_edualc&lt;br class='autobr' /&gt;
PostgreSQL 9.6.22 lanc&#233; sur 127.0.0.1:5432 &#8212; Vous &#234;tes connect&#233; avec le profil &#171; jnde6668 &#187;&lt;br class='autobr' /&gt;
Aucune table trouv&#233;e.&lt;/p&gt;
&lt;p&gt;edualc.be &#8212;&gt; donne acc&#232;s au slip.&lt;br class='autobr' /&gt; /ecrire connection : admin u&#8212;y&lt;br class='autobr' /&gt;
edualc.jnde6668.odns.fr &#8212;&gt; donne acc&#232;s au slip&lt;br class='autobr' /&gt; /ecrire	connection : admin u&#8212;y&lt;br class='autobr' /&gt;
jnde6668.odns.fr &#8212;&gt; donne acc&#232;s au mediawiki&lt;br class='autobr' /&gt; connection : edualc trop@lO#wiK&lt;/p&gt;
&lt;p&gt;Applications python&lt;/p&gt;
&lt;p&gt;Cr&#233;ation d'une web application&lt;/p&gt;
&lt;p&gt;* Python version 3.12.11&lt;br class='autobr' /&gt;
* Application root devolu&lt;br class='autobr' /&gt;
* Application URL edualc.be&lt;br class='autobr' /&gt;
* Application startup file &#8212;&gt; laisser vide&lt;br class='autobr' /&gt;
* Application Entry point &#8212;&gt; laisser vide&lt;/p&gt;
&lt;p&gt; - It works !&lt;br class='autobr' /&gt; - Python 3.12.11&lt;/p&gt;
&lt;p&gt;Une fois le projet devolu cr&#233;&#233;, on arrive sur la page de gestion du projet&lt;br class='autobr' /&gt;
On installe maintenant Django&lt;/p&gt;
&lt;p&gt;On va faire cela avec l'outil Terminal dans cPanel&lt;br class='autobr' /&gt;
il faut copier la commande source qui est donn&#233; dans la page de gestion du projet. C'est la commande qui permet d'entrer dans l'environnement Python :&lt;br class='autobr' /&gt;
source /home/jnde6668/virtualenv/devolu/3.12/bin/activate &amp;&amp; cd /home/jnde6668/devolu&lt;/p&gt;
&lt;p&gt;* Mettre &#224; jour pip pip install &#8212;upgrade pip&lt;br class='autobr' /&gt;
* Installer Django pip install Django&lt;/p&gt;
&lt;p&gt;Maintenant on compl&#232;te l'installation de Django, tjrs dans le terminal :&lt;br class='autobr' /&gt;
* cd&lt;br class='autobr' /&gt;
* rm -fr devolu/*&lt;br class='autobr' /&gt;
* cd devolu&lt;br class='autobr' /&gt;
* pip install -r requirements.txt. rat&#233;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Design patterns et bonnes pratiques</title>
		<link>https://edualc.be/spip.php?article71</link>
		<guid isPermaLink="true">https://edualc.be/spip.php?article71</guid>
		<dc:date>2026-07-11T13:35:14Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>edualc</dc:creator>







		<description>
&lt;p&gt;Design patterns et bonnes pratiques &lt;br class='autobr' /&gt;
Introduction &#224; quelques design patterns et principes de programmation importants et impl&#233;ment&#233;s par Django &lt;br class='autobr' /&gt;
DRY : Don't Repeat Yourself, ne vous r&#233;p&#233;tez pas ! DRY est l'un des principes les plus importants en d&#233;veloppement d'applications, et pas uniquement pour le Web. &lt;br class='autobr' /&gt;
N'apprend-t-on pas aux programmeurs d&#233;butants &#224; ne jamais dupliquer de portions de code, mais &#224; les factoriser dans des routines uniques (fonctions, m&#233;thodes&#8230;) que l'on appelle au (&#8230;)&lt;/p&gt;


-
&lt;a href="https://edualc.be/spip.php?rubrique15" rel="directory"&gt;Django&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Design patterns et bonnes pratiques&lt;/p&gt;
&lt;p&gt;Introduction &#224; quelques design patterns et principes de programmation importants et impl&#233;ment&#233;s par Django&lt;/p&gt;
&lt;p&gt;DRY : Don't Repeat Yourself, ne vous r&#233;p&#233;tez pas !&lt;br class='autobr' /&gt;
DRY est l'un des principes les plus importants en d&#233;veloppement d'applications, et pas uniquement pour le Web.&lt;/p&gt;
&lt;p&gt;N'apprend-t-on pas aux programmeurs d&#233;butants &#224; ne jamais dupliquer de portions de code, mais &#224; les factoriser dans des routines uniques (fonctions, m&#233;thodes&#8230;) que l'on appelle au besoin ?&lt;/p&gt;
&lt;p&gt;Dans un syst&#232;me, toute connaissance doit avoir une repr&#233;sentation unique, non-ambigu&#235;, faisant autorit&#233;.&lt;/p&gt;
&lt;p&gt;Un exemple concret sur le Web : liens hard cod&#233;s&#8230;&lt;br class='autobr' /&gt;
Une des applications les plus parlantes de la philosophie DRY sur le Web est l'&#233;criture des URL dans les liens.&lt;br class='autobr' /&gt;
Imaginez que vous ayez mis en place un blog sur votre site, et que vous ayez d&#233;fini un pattern d'URL pour chaque billet du blog. Par exemple : /blog/billets/id_billet/.&lt;br class='autobr' /&gt;
Maintenant, imaginez que vous &#233;ditez une portion de code faisant mention de billet du blog. Vous serez peut-&#234;tre tent&#233;, naturellement, de &#171; hard coder &#187; l'URL de la page de destination dans le lien, comme ceci : '&lt;a href='https://edualc.be/blog/billets/' + billet.id + '/'&gt;' + billet.nom + '&lt;/a&gt;'. Et l&#224;, c'est le drame : vous commencez &#224; vous r&#233;p&#233;ter&#8230;&lt;br class='autobr' /&gt;
Plus tard, vous d&#233;cidez de modifier le pattern d'URL des billets de blog, disons par exemple en y ajoutant des mots cl&#233;s issus du titre de la page &#224; des fins de SEO : /blog/billets/comparaison-django-rails,42.html.&lt;br class='autobr' /&gt;
Les URL de vos billets sont plus sympas &#224; pr&#233;sent ! Mais tous les liens hard cod&#233;s que vous avez pu faire de la mani&#232;re d&#233;crite ci-dessus sont morts. Dommage, il va falloir repasser dans toutes vos vues pour corriger les URL que vous avez reconstitu&#233;es.&lt;br class='autobr' /&gt;
En appliquant le principe DRY &#224; cette probl&#233;matique, les concepteurs de frameworks comme Django mettent en place des fonctions utilitaires permettant de calculer dynamiquement les URL de pages sp&#233;cifiques. Notre lien devient, du coup, quelque chose du genre : '&lt;a href='https://edualc.be/[billet id=billet.id]'&gt;' + billet.nom + '&lt;/a&gt;'. Nous verrons un peu plus tard la syntaxe pr&#233;cise employ&#233;e par Django pour &#233;crire ce genre de chose.&lt;/p&gt;
&lt;p&gt;MVC : Mod&#232;le-vue-contr&#244;leur (model-view-controller)&lt;br class='autobr' /&gt;
Le principal int&#233;r&#234;t de MVC est la s&#233;paration des pr&#233;occupations, chaque probl&#233;matique est g&#233;r&#233;e s&#233;par&#233;ment :&lt;br class='autobr' /&gt;
* La description des donn&#233;es manipul&#233;es par une application et des moyens d'acc&#233;der/manipuler ces donn&#233;es sont d&#233;crites dans les mod&#232;les.&lt;br class='autobr' /&gt;
* Les &#233;crans affich&#233;s (le &#171; rendu &#187;) sont d&#233;crits dans les vues.&lt;br class='autobr' /&gt;
* Enfin, les contr&#244;leurs sont les chefs d'orchestre qui, &#224; partir d'une sollicitation de l'utilisateur (g&#233;n&#233;ralement, acc&#232;s &#224; une URL), font appel aux mod&#232;les pour r&#233;cup&#233;rer les donn&#233;es et &#233;ventuellement les mettre &#224; jour, puis demandent le rendu de la vue attendue.&lt;br class='autobr' /&gt;
Mod&#232;les, vues et contr&#244;leurs sont g&#233;n&#233;ralement &#233;crits dans des fichiers diff&#233;rents, ce qui permet notamment aux diff&#233;rents membres des &#233;quipes d'acc&#233;der aux ressources qui les concernent (par exemple les int&#233;grateur n'interviennent pas sur les mod&#232;les, mais fr&#233;quemment sur les vues).&lt;/p&gt;
&lt;p&gt;Nous en reparlerons plus tard, mais malgr&#233; le fait qu'il impl&#233;mente fid&#232;lement et efficacement le patron MVC, Django opte pour une d&#233;nomination l&#233;g&#232;rement diff&#233;rente :&lt;br class='autobr' /&gt;
* Mod&#232;le = Model (pas de surprise&#8230;)&lt;br class='autobr' /&gt;
* Vue = Template&lt;br class='autobr' /&gt;
* Contr&#244;leur = View&lt;br class='autobr' /&gt;
En Django, ce qu'on appelle view est donc un contr&#244;leur. Ce n'est pas m&#233;chant mais mieux vaut le savoir&#8230;&lt;/p&gt;
&lt;p&gt;Active record&lt;br class='autobr' /&gt;
Active record est le design pattern derri&#232;re les ORM (Object-relational mapping). En fait, on dit que les ORM impl&#233;mentent le design pattern active record.&lt;br class='autobr' /&gt;
Ce design pattern d&#233;finit une strat&#233;gie d'acc&#232;s aux tables et lignes d'une base de donn&#233;es via des objets m&#233;tier, aussi bien pour la lecture que pour l'&#233;criture en base. Le programmeur n'&#233;crit donc pas de SQL, mais appelle des m&#233;thodes du type mon_objet.save() sur ses objets m&#233;tier pour d&#233;clencher des actions de persistance c&#244;t&#233; SGBD.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>&#201;cosyst&#232;me d'une application Django</title>
		<link>https://edualc.be/spip.php?article70</link>
		<guid isPermaLink="true">https://edualc.be/spip.php?article70</guid>
		<dc:date>2026-07-11T13:33:59Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>edualc</dc:creator>







		<description>
&lt;p&gt;&#201;cosyst&#232;me d'une application Django &lt;br class='autobr' /&gt;
C'est &#224; dire les composants logiciels qui sont li&#233;s au bon fonctionnement d'une appli : serveur, bases de donn&#233;es, langages &lt;br class='autobr' /&gt;
Python &lt;br class='autobr' /&gt;
Django est un framework Python : en d'autres termes, tout le code r&#233;utilisable qu'il d&#233;finit est &#233;crit en Python, et les applications d&#233;velopp&#233;es en Django sont compos&#233;es de code Python. Vous devez donc vous assurer de disposer de Python sur votre machine de d&#233;veloppement (ce qui n'est g&#233;n&#233;ralement qu'une formalit&#233;&#8230;). Une (&#8230;)&lt;/p&gt;


-
&lt;a href="https://edualc.be/spip.php?rubrique15" rel="directory"&gt;Django&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&#201;cosyst&#232;me d'une application Django&lt;/p&gt;
&lt;p&gt;C'est &#224; dire les composants logiciels qui sont li&#233;s au bon fonctionnement d'une appli : serveur, bases de donn&#233;es, langages&lt;/p&gt;
&lt;p&gt;Python&lt;/p&gt;
&lt;p&gt;Django est un framework Python : en d'autres termes, tout le code r&#233;utilisable qu'il d&#233;finit est &#233;crit en Python, et les applications d&#233;velopp&#233;es en Django sont compos&#233;es de code Python.&lt;br class='autobr' /&gt;
Vous devez donc vous assurer de disposer de Python sur votre machine de d&#233;veloppement (ce qui n'est g&#233;n&#233;ralement qu'une formalit&#233;&#8230;).&lt;br class='autobr' /&gt;
Une introduction &#224; Python, n&#233;cessaire avant de vous lancer dans un projet Django si vous n'avez jamais pratiqu&#233; le langage, vous est propos&#233;e dans une section d&#233;di&#233;e du site : apprendre Python&lt;/p&gt;
&lt;p&gt;Serveur&lt;/p&gt;
&lt;p&gt;Les applications Django sont des applications web, ce qui implique que pour &#234;tre ex&#233;cut&#233;es, elles doivent &#234;tres prises en charge par un serveur (Apache).&lt;br class='autobr' /&gt;
&#192; noter que Django est livr&#233; avec un serveur de d&#233;veloppement tr&#232;s simple et automatiquement disponible dans tout projet Django, permettant de tester les applications lors de leur d&#233;veloppement sans avoir &#224; installer/administrer de serveur sp&#233;cifique. Ce serveur n'a pas vocation &#224; &#234;tre utilis&#233; en production.&lt;/p&gt;
&lt;p&gt;Bases de donn&#233;es&lt;/p&gt;
&lt;p&gt;Un projet Django ne n&#233;cessite pas forc&#233;ment la mise en &#339;uvre d'une base de donn&#233;es. N&#233;anmoins, une application web a g&#233;n&#233;ralement besoin de stocker et requ&#234;ter des donn&#233;es, et la mise en place d'une BDD est plus que fr&#233;quente.&lt;br class='autobr' /&gt;
L'ORM de Django supporte, de mani&#232;re transparente et native, diff&#233;rents SGBD : MySQL, Oracle, PostgreSQL, SQLite&#8230;&lt;br class='autobr' /&gt;
&#192; vous de choisir quel SGBD vous correspond le mieux !&lt;/p&gt;
&lt;p&gt;Outils en ligne de commande&lt;br class='autobr' /&gt;
Tout projet Django est automatiquement &#171; &#233;quip&#233; &#187;, lors de sa cr&#233;ation, d'outils en ligne de commande permettant de r&#233;aliser diff&#233;rentes op&#233;rations au sein du projet : cr&#233;ation des tables de base de donn&#233;es, lancement du serveur de d&#233;veloppement, etc.&lt;br class='autobr' /&gt;
Voici un exemple d'utilisation de ces commandes : la commande de cr&#233;ation m&#234;me d'un projet (dont nous reparlerons plus tard) :&lt;br class='autobr' /&gt;
django-admin.py startproject miage&lt;br class='autobr' /&gt;
cd miage/&lt;br class='autobr' /&gt;
python manage.py syncdb&lt;br class='autobr' /&gt;
Creating tables ...&lt;br class='autobr' /&gt;
Creating table auth_permission&lt;br class='autobr' /&gt;
Creating table auth_group_permissions&lt;br class='autobr' /&gt;
Creating table auth_group&lt;br class='autobr' /&gt;
Creating table auth_user_groups&lt;br class='autobr' /&gt;
Creating table auth_user_user_permissions&lt;br class='autobr' /&gt;
Creating table auth_user&lt;br class='autobr' /&gt;
Creating table django_content_type&lt;br class='autobr' /&gt;
Creating table django_session&lt;br class='autobr' /&gt;
Creating table django_site&lt;/p&gt;
&lt;p&gt;You just installed Django's auth system, which means you don't have any superusers defined.&lt;br class='autobr' /&gt;
Would you like to create one now ? (yes/no) : yes&lt;br class='autobr' /&gt;
Username (leave blank to use 'pascallando') :&lt;br class='autobr' /&gt;
Email address : pascal.lando@u-picardie.fr&lt;br class='autobr' /&gt;
Password :&lt;br class='autobr' /&gt;
Password (again) :&lt;br class='autobr' /&gt;
Superuser created successfully.&lt;br class='autobr' /&gt;
Installing custom SQL ...&lt;br class='autobr' /&gt;
Installing indexes ...&lt;br class='autobr' /&gt;
Installed 0 object(s) from 0 fixture(s)&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Premier projet Django</title>
		<link>https://edualc.be/spip.php?article69</link>
		<guid isPermaLink="true">https://edualc.be/spip.php?article69</guid>
		<dc:date>2026-07-11T13:32:35Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>edualc</dc:creator>







		<description>
&lt;p&gt;Premier projet Django &lt;br class='autobr' /&gt;
Qu'est-ce qu'un projet Django ? &lt;br class='autobr' /&gt;
En Django, le projet est l'entit&#233; de base, qui repr&#233;sente une instance du framework et regroupe un ensemble de configurations et d'applications. &lt;br class='autobr' /&gt;
&#201;cosyst&#232;me d'un projet Django Voici une vue sch&#233;matique de l'&#233;cosyst&#232;me d'un projet Django : &#65532; &#201;cosyst&#232;me d'un projet Django : projet, applications&#8230; &lt;br class='autobr' /&gt;
Installation et cr&#233;ation du projet&#8230; &lt;br class='autobr' /&gt;
OK, vous savez &#224; pr&#233;sent ce qu'est un projet Django ! Voici maintenant le programme : 1. Installation (&#8230;)&lt;/p&gt;


-
&lt;a href="https://edualc.be/spip.php?rubrique15" rel="directory"&gt;Django&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Premier projet Django&lt;/p&gt;
&lt;p&gt;Qu'est-ce qu'un projet Django ?&lt;/p&gt;
&lt;p&gt;En Django, le projet est l'entit&#233; de base, qui repr&#233;sente une instance du framework et regroupe un ensemble de configurations et d'applications.&lt;/p&gt;
&lt;p&gt;&#201;cosyst&#232;me d'un projet Django&lt;br class='autobr' /&gt;
Voici une vue sch&#233;matique de l'&#233;cosyst&#232;me d'un projet Django :&lt;br class='autobr' /&gt;
&#65532;&lt;br class='autobr' /&gt;
&#201;cosyst&#232;me d'un projet Django : projet, applications&#8230;&lt;/p&gt;
&lt;p&gt;Installation et cr&#233;ation du projet&#8230;&lt;/p&gt;
&lt;p&gt;OK, vous savez &#224; pr&#233;sent ce qu'est un projet Django !&lt;br class='autobr' /&gt;
Voici maintenant le programme : &lt;br class='autobr' /&gt;
1. Installation de Django &#8211; Cette page comporte les informations n&#233;cessaires pour installer Django sur votre machine de d&#233;veloppement.&lt;br class='autobr' /&gt;
2. Pr&#233;sentation du projet &#8211; Notre premier projet Django consistera en la conception et le d&#233;veloppement d'un syst&#232;me de gestion de projet Scrum (m&#233;thode agile d&#233;di&#233;e &#224; la gestion de projets, particuli&#232;rement adapt&#233;e aux projets informatiques). Cette page est en quelque sorte notre cahier des charges &#171; simplifi&#233; &#187;.&lt;br class='autobr' /&gt;
3. Cr&#233;ation du projet &#8211; Vous apprendrez sur cette page &#224; cr&#233;er un projet Django, pas &#224; pas. Ce projet nous servira de fil conducteur durant tout notre apprentissage du framework. Notre projet : un syst&#232;me simple de gestion de projet Scrum : backlog, &#233;quipe, sprints&#8230;.&lt;br class='autobr' /&gt;
4. Cr&#233;ation d'une application &#8211; Nous allons maintenant cr&#233;er une premi&#232;re application Django, au sein de notre projet. Cette application m&#233;tier nomm&#233;e django-chistera (la passe dans le dos en rugby !) sera le c&#339;ur de notre projet, et g&#233;rera l'ensemble des probl&#233;matiques li&#233;es &#224; la gestion d'un projet Scrum.&lt;br class='autobr' /&gt;
5. Ajout des mod&#232;les &#8211; Cette page vous apprendra &#224; cr&#233;er des mod&#232;les pour une application Django. Avant de commencer, assurez-vous de conna&#238;tre MVC et de savoir ce qu'est un mod&#232;le&#8230;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Comment changer les volumes dans le terminal Mac OS X</title>
		<link>https://edualc.be/spip.php?article68</link>
		<guid isPermaLink="true">https://edualc.be/spip.php?article68</guid>
		<dc:date>2026-07-11T13:28:11Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>edualc</dc:creator>







		<description>
&lt;p&gt;Comment changer les volumes dans le terminal Mac OS X &lt;br class='autobr' /&gt;
https://fre.applersg.com/how/ &lt;br class='autobr' /&gt;
Tapez &#034;cd / Volumes&#034; &#224; l'invite de commande de la fen&#234;tre Terminal, puis appuyez sur la touche &#034;Retour&#034; pour basculer vers le r&#233;pertoire des volumes mont&#233;s de votre Mac, y compris le lecteur de d&#233;marrage, les disques durs internes et externes, les cl&#233;s USB, les CD et les DVD .
&lt;br class='autobr' /&gt;
Tapez &#171; cd &#187; suivi du nom d'un volume mont&#233;, puis appuyez sur la touche &#171; Retour &#187; pour passer &#224; ce volume. Par exemple, si votre (&#8230;)&lt;/p&gt;


-
&lt;a href="https://edualc.be/spip.php?rubrique16" rel="directory"&gt;mac&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Comment changer les volumes dans le terminal Mac OS X&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://fre.applersg.com/how/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://fre.applersg.com/how/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tapez &#034;cd / Volumes&#034; &#224; l'invite de commande de la fen&#234;tre Terminal, puis appuyez sur la touche &#034;Retour&#034; pour basculer vers le r&#233;pertoire des volumes mont&#233;s de votre Mac, y compris le lecteur de d&#233;marrage, les disques durs internes et externes, les cl&#233;s USB, les CD et les DVD .&lt;br class='autobr' /&gt;
Tapez &#171; cd &#187; suivi du nom d'un volume mont&#233;, puis appuyez sur la touche &#171; Retour &#187; pour passer &#224; ce volume. Par exemple, si votre disque dur externe s'appelle &#171; Musique &#187;, vous tapez &#171; cd Musique &#187;, puis appuyez sur la touche &#171; Entr&#233;e &#187; du clavier pour passer &#224; ce volume. Si le nom du volume contient des espaces, comme &#171; Musique de novembre &#187;, saisissez le nom du volume entre guillemets (comme dans : cd &#171; Musique de novembre &#187;).&lt;br class='autobr' /&gt;
Tapez &#171; cd &#187; puis faites glisser l'ic&#244;ne d'un volume mont&#233; dans la fen&#234;tre du terminal, puis appuyez sur la touche &#034;Retour&#034; du clavier pour passer &#224; un volume sans avoir &#224; taper quoi que ce soit.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>