Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

5 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <!doctype html>
  2. <html lang=fr>
  3. <head>
  4. <!-- Always define the charset before the title -->
  5. <meta charset=utf-8>
  6. <title>Django 1.0, état des lieux — Biologeek — David Larlet</title>
  7. <!-- Define a viewport to mobile devices to use - telling the browser to assume that the page is as wide as the device (width=device-width) and setting the initial page zoom level to be 1 (initial-scale=1.0) -->
  8. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  9. <!-- Fake favicon, to avoid extra request to the server -->
  10. <link rel="icon" href="data:;base64,iVBORw0KGgo=">
  11. <link type="application/atom+xml" rel="alternate" title="Feed" href="/david/log/" />
  12. <link rel="manifest" href="/manifest.json">
  13. <link rel="stylesheet" href="/static/david/css/larlet-david-_J6Rv.css" data-instant-track />
  14. <noscript>
  15. <style type="text/css">
  16. /* Otherwise fonts are loaded by JS for faster initial rendering. See scripts at the bottom. */
  17. body {
  18. font-family: 'EquityTextB', serif;
  19. }
  20. h1, h2, h3, h4, h5, h6, time, nav a, nav a:link, nav a:visited {
  21. font-family: 'EquityCapsB', sans-serif;
  22. font-variant: normal;
  23. }
  24. </style>
  25. </noscript>
  26. <!-- Canonical URL for SEO purposes -->
  27. <link rel="canonical" href="https://larlet.fr/david/biologeek/archives/20070108-django-1-0-etat-des-lieux">
  28. </head>
  29. <body>
  30. <div>
  31. <header>
  32. <nav>
  33. <p>
  34. <small>
  35. Je suis <a href="/david/" title="Profil public">David Larlet</a>, <a href="/david/pro/" title="Activité professionnelle">artisan</a> du web qui vous <a href="/david/pro/accompagnement/" title="Activité d’accompagnement">accompagne</a><span class="more-infos"> dans l’acquisition de savoirs pour concevoir des <a href="/david/pro/produits-essentiels/" title="Qu’est-ce qu’un produit essentiel ?">produits essentiels</a></span>. <span class="more-more-infos">Discutons ensemble d’une <a href="/david/pro/devis/" title="En savoir plus">non-demande de devis</a>.</span> Je partage ici mes <a href="/david/blog/" title="Expériences bienveillantes">réflexions</a> et <a href="/david/correspondances/2017/" title="Lettres hebdomadaires">correspondances</a>.
  36. </small>
  37. </p>
  38. </nav>
  39. </header>
  40. <section>
  41. <h1 property="schema:name">Django 1.0, état des lieux</h1>
  42. <article typeof="schema:BlogPosting">
  43. <div property="schema:articleBody">
  44. <img src="/static/david/biologeek/images/logos/django.png" alt="vignette" style="float:left; margin: 0.5em 1em;" property="schema:thumbnailUrl" />
  45. <p>Les développeurs principaux ont l'habitude de dire que la version 1.0 sortira lorsqu'elle sera prête. Alors évidemment c'est frustrant... mais louable. Faisons le tour des fonctionnalités manquantes et/ou toujours en développement. Je rappelle que chacun peut bien entendu critiquer, tester, participer, la liste de diffusion de développement est ouverte et intéressante.</p>
  46. <p><strong>Disclaimer</strong>&nbsp;: je ne suis pas développeur Django donc ce billet reste de l'ordre de la supposition.</p>
  47. <h2>Pour la 1.0</h2>
  48. <p>Le plus simple et de consulter le <a href="http://www.djangobook.com/en/beta/">Django Book</a> qui est en cours d'écriture. On constate que les chapitres restants sont les formulaires et les commentaires (d'autres sont incomplets bien sûr mais c'est assez significatif). Par ailleurs, les <a href="http://www.djangoproject.com/documentation/api_stability/"><abbr title="Application Programming Interface">API</abbr> définies comme étant non stables</a> sont&nbsp;:</p>
  49. <ul>
  50. <li><strong>les formulaires</strong>&nbsp;: ils sont actuellement en cours de debug et c'est très actif sur les deux listes de diffusion (utilisateurs et développement). Le problème est que <a href="http://www.djangoproject.com/documentation/newforms/">la documentation n'est pas totalement écrite</a>, heureusement qu'on trouve <a href="http://code.pui.ch/2007/01/07/using-djangos-newforms/">des exemples simples d'utilisation</a> par ailleurs.</li>
  51. <li><strong>les commentaires</strong>&nbsp;: l'objectif est de pouvoir étendre le système de commentaires au même titre que celui des utilisateurs avec l'implémentation récente de <strong>get_profile()</strong> (une <a href="http://www.b-list.org/weblog/2006/06/06/django-tips-extending-user-model">bonne documentation sur b-list</a>, enfin <a href="http://www.b-list.org/weblog/categories/django">toute la catégorie django</a> est exceptionnelle !). C'est le principal frein à la refonte de ce site, je ne veux pas jouer avec le feu concernant les commentaires.</li>
  52. <li><strong>l'authentification</strong>&nbsp;: à ma connaissance, l'<abbr title="Application Programming Interface">API</abbr> est maintenant stable.</li>
  53. <li><strong>les relations génériques</strong>&nbsp;: il n'y a aucune indication quant à leur migration future, c'est à mon avis une bonne chose de les avoir dans le cœur du framework car elles constituent un réel avantage et devraient être mises en avant au même titre que l'interface d'administration. Ça permet de gagner énormément de temps en très peu de lignes de code.</li>
  54. <li><strong>la sérialisation</strong>&nbsp;: vu <a href="http://www.djangoproject.com/documentation/serialization/">l'état de la documentation</a> c'est toujours en cours de développement. Je n'ai pas de gros besoins en <abbr title="Asynchronous JavaScript And XML">AJAX</abbr> pour le moment donc ça ne me dérange pas trop.</li>
  55. <li><strong>le support d'Oracle</strong>&nbsp;: ce n'est pas mentionné mais il y a eu un énorme travail de réalisé et c'est actuellement en phase de debug donc ça sera normalement opérationnel pour la 1.0, c'est d'ailleurs ce qui est annoncé dans le livre. C'est vraiment une bonne nouvelle car je vais en avoir professionnellement besoin.</li>
  56. </ul>
  57. <p>Conclusion, je pense que la 1.0 sortira avec le livre (soit vers début mars à mon avis). J'étais plus pessimiste lors de l'annonce de l'agenda d'écriture du livre qui était pour moi intenable mais force est de constater qu'ils tiennent le rythme&nbsp;! Perfectionists with deadlines, ok.</p>
  58. <h2>Le meilleur est à venir</h2>
  59. <p>Je ne pense pas que les branches actuellement en développement seront finalisées d'ici la version 1.0 (et c'est bien dommage mais bon il faut en garder sous le coude pour la suite). Voici celles que je trouve les plus intéressantes&nbsp;:</p>
  60. <ul>
  61. <li><strong>l'héritage des modèles</strong>&nbsp;: c'était implémenté avant qu'il y ait l'étape «&nbsp;<a href="http://code.djangoproject.com/wiki/RemovingTheMagic">Magic Removal</a> » et c'était vraiment pratique selon les objets manipulés. Apparemment c'est plus complexe à implémenter maintenant, toujours est-il que ça avance. C'est un des développeurs principaux qui s'occupe de la branche mais il était très occupé ces derniers temps. C'est à mon avis la branche la plus proche d'être intégrée dans la 1.0.</li>
  62. <li><strong>l'évolution du schéma</strong>&nbsp;: c'est l'un des gros défauts actuels de django. Enfin pour d'autres c'est un avantage car lorsqu'on touche aux données on n'est jamais trop prudent et il vaut mieux le faire à la main. Mais ce serait tellement plus facile d'utiliser django pour modifier des tables à la volée&nbsp;! C'est en cours de développement mais c'est complexe et les beta-testeurs se font rares ;-).</li>
  63. <li><strong>le contrôle des accès</strong>&nbsp;: c'est aussi un défaut actuel. Les droits ne peuvent être décernés aux utilisateurs de l'interface d'administration que par type d'objet et non par instance d'objet. C'est assez réducteur mais <a href="http://www.djangobook.com/en/beta/chapter18/#cn19">le livre est très clair sur le but de l'interface d'administration</a> (et il était temps)&nbsp;: <strong>elle sert à rendre éditable un contenu structuré par des utilisateurs de confiance</strong>. Donc ce n'est en aucun cas une alternative à une interface utilisateur classique, c'est pour les administrateurs du site (d'où le <strong>de confiance</strong>).</li>
  64. </ul>
  65. <p>Ces deux dernières branches avaient été initiées lors de Google Summer of Code mais ne sont jamais arrivées à terme. Je ne sais pas s'il faut remettre en cause la qualité des développeurs ou l'ampleur de la tâche mais c'est bien dommage.</p>
  66. <p>En conclusion, la 1.0 devrait arriver rapidement maintenant et c'est une bonne chose, autant du point de vue de la stabilité que de celui des décideurs se basant sur les numéros de version. Je rappelle que la version de développement est considérée comme stable pour permettre de disposer des dernières fonctionnalités sans mettre en péril les sites en production. Pouvoir arrêter le code à un instant t sera tout de même intéressant pour les gros projets de façon à être sûr que chacun travaille avec la même version du code.</p>
  67. <p><strong>[edit du 13]</strong>&nbsp;: j'ai doublé Jacob de quelques jours :-). N'hésitez pas à aller <a href="http://groups.google.com/group/django-developers/browse_frm/thread/592d5b8f9593ea38/0c19a63a1e4648e5">lire son résumé bien plus complet</a>, commenté et surtout qui corrige certaines de mes affirmations.</p>
  68. </div>
  69. </article>
  70. <footer>
  71. <h6 property="schema:datePublished">— 08/01/2007</h6>
  72. </footer>
  73. </section>
  74. <section>
  75. <div>
  76. <h3>Articles peut-être en rapport</h3>
  77. <ul>
  78. <li><a href="/david/biologeek/archives/20080902-sortie-de-django-10-une-annee-de-nouveautes/" title="Accès à Sortie de Django 1.0, une année de nouveautés">Sortie de Django 1.0, une année de nouveautés</a></li>
  79. <li><a href="/david/biologeek/archives/20080211-astuces-et-bonnes-pratiques-django/" title="Accès à ★ Astuces et bonnes pratiques Django">★ Astuces et bonnes pratiques Django</a></li>
  80. <li><a href="/david/biologeek/archives/20071007-des-vacances-et-des-liens/" title="Accès à Des vacances et des liens">Des vacances et des liens</a></li>
  81. </ul>
  82. </div>
  83. </section>
  84. <section>
  85. <div id="comments">
  86. <h3>Commentaires</h3>
  87. <div class="comment" typeof="schema:UserComments">
  88. <p class="comment-meta">
  89. <span class="comment-author" property="schema:creator">kib2</span> le <span class="comment-date" property="schema:commentTime">08/01/2007</span> :
  90. </p>
  91. <div class="comment-content" property="schema:commentText">
  92. <p>Très bon récapitulatif David, et je suis tout à fait d'accord avec toi sur l'évolution du schéma notamment. Changer son modèle de façon dynamique serait pour moi un plus appréciable, tout le monde ne maîtrise pas les languages des bases de données, et il faut reconnaître que la première fois qu'on y est confronté, on a un peu peur de tout casser.<br />
  93. <br />
  94. En ce qui te concerne, quel est le problème avec les commentaires ? L'implémentation m'a l'air assez souple là-dessus, tu utilises les simples freecomments, très simples à manier ou les comments beaucoup plus étendus, qui te permettent, à ton niveau, d'éviter le spam si c'est bien implémenté. Mais était-ce bien le problème de la sécurité qui te dérangeait ?<br />
  95. <br />
  96. A +:<br />
  97. Kib² </p>
  98. </div>
  99. </div>
  100. <div class="comment" typeof="schema:UserComments">
  101. <p class="comment-meta">
  102. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">08/01/2007</span> :
  103. </p>
  104. <div class="comment-content" property="schema:commentText">
  105. <p>@Kib2 :<br />
  106. &gt; En ce qui te concerne, quel est le problème avec les commentaires ?<br />
  107. <br />
  108. L'API des formulaires et des commentaires va changer, ce serait dommage de développer deux fois la même chose... surtout si l'évolution du schéma n'est pas encore opérationnelle ;-).<br />
  109. <br />
  110. Mais bon c'est un détail et surtout une excuse, tout part du modèle de données et des URL.</p>
  111. </div>
  112. </div>
  113. <div class="comment" typeof="schema:UserComments">
  114. <p class="comment-meta">
  115. <span class="comment-author" property="schema:creator">kib2</span> le <span class="comment-date" property="schema:commentTime">08/01/2007</span> :
  116. </p>
  117. <div class="comment-content" property="schema:commentText">
  118. <p>Ah bon ?<br />
  119. Mince, est-ce que tu sais si il y aura une compatibilité ascendente ? Ca m'arrangerait de ne pas avoir à tout recoder :)</p>
  120. </div>
  121. </div>
  122. <div class="comment" typeof="schema:UserComments">
  123. <p class="comment-meta">
  124. <span class="comment-author" property="schema:creator">NiCoS</span> le <span class="comment-date" property="schema:commentTime">09/01/2007</span> :
  125. </p>
  126. <div class="comment-content" property="schema:commentText">
  127. <p>Faut vraiment que je me mette à lire le book, j'ai vraiment l'impression de passer à coté de pas mal de choses (et ça m'éviterait peut être de recoder des choses comme les commentaires par ex :-P )<br />
  128. <br />
  129. C'est vrai que l'évolution de schéma serait vraiment bien - c'est pénible de tout devoir &quot;casser&quot; et tout relancer alors qu'on a ajouté un champ à une table... (surtout quand c'est par ex pour un avatar :-D )<br />
  130. <br />
  131. D'ailleurs, je ne sais pas s'ils pourront sortir une 1.0 sans cette feature, ou alors va falloir qu'elle arrive vite après ;-)</p>
  132. </div>
  133. </div>
  134. <div class="comment" typeof="schema:UserComments">
  135. <p class="comment-meta">
  136. <span class="comment-author" property="schema:creator">NiCoS</span> le <span class="comment-date" property="schema:commentTime">09/01/2007</span> :
  137. </p>
  138. <div class="comment-content" property="schema:commentText">
  139. <p>Pour les commentaires modérés + akismet, tu as ce tuto de James :<br />
  140. <br />
  141. <a href="http://www.b-list.org/weblog/2006/07/16/django-tips-hacking-freecomment" title="http://www.b-list.org/weblog/2006/07/16/django-tips-hacking-freecomment" rel="nofollow">www.b-list.org/weblog/200...</a></p>
  142. </div>
  143. </div>
  144. <div class="comment" typeof="schema:UserComments">
  145. <p class="comment-meta">
  146. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">09/01/2007</span> :
  147. </p>
  148. <div class="comment-content" property="schema:commentText">
  149. <p>@Kib2 : pour les formulaires, ça va être progressif mais je te conseille de lire la documentation sur les newforms : <a href="http://www.djangoproject.com/documentation/newforms/#migration-plan" title="http://www.djangoproject.com/documentation/newforms/#migration-plan" rel="nofollow">www.djangoproject.com/doc...</a> c'est expliqué en en-tête.<br />
  150. <br />
  151. @NiCoS : tant que tu n'as pas de données c'est simple, après c'est vrai qu'il faut un peu mettre les mains dans le cambouis et j'aime pas trop ça ;-)<br />
  152. <br />
  153. Pour la modération je verrais ensuite oui. Mais j'y pense vu la façon dont je me fais spammer en ce moment :/.</p>
  154. </div>
  155. </div>
  156. </div>
  157. </section>
  158. <footer>
  159. <nav>
  160. <p>
  161. <small>
  162. Je réponds quasiment toujours aux <a href="m&#x61;ilto:d&#x61;vid%40l&#x61;rlet&#46;fr" title="Envoyer un email">emails</a> (<a href="/david/signature/" title="Ma signature actuelle avec possibilité de chiffrement">signés</a>) et vous pouvez me rencontrer à Montréal. <span class="more-infos">N’hésitez pas à <a href="/david/log/" title="Être tenu informé des mises à jour">vous abonner</a> pour être tenu informé des publications récentes.</span>
  163. </small>
  164. </p>
  165. </nav>
  166. </footer>
  167. </div>
  168. <script src="/static/david/js/larlet-david-3ee43f.js" data-no-instant></script>
  169. <script data-no-instant>InstantClick.init()</script>
  170. </body>
  171. </html>