R 11:00 redangel » flanker: Hello flan ^^

vince m'a dit que je devrais me rapprocher de toi (ne prends pas peur comme ça xD) pour te demander des infos sur Django+Python.

Donc oui, j'aimerais développer mes compétences (bien maigres) web, et je t'avais déjà vu défendre ces langages contre PHP (dont bien des gens râlent...), donc tout naturellement, si ça te t'embête pas, pourrais-tu m'indiquer les avantages, inconvénients s'il y a, les forces et comment commencer en Django?
Et d'ailleurs pourquoi Django ET python?

D'avance merci.
Ps: le but premier serait de faire le site dont parle le topic qui va bien!


Ps2: j'ai mis ça ici, mais j'ai hésité avec les catégories PHP(non), langages web client(non?) et scripts(hehe)

!call Flanker
!call Zeph
avatarL'homme qu'a vu l'homme qu'a vu l'ours, qu'a mangé l'facteur..
!call Flanker
--- Call : Flanker appelé(e) sur ce topic ...

!call Zeph
--- Call : Zeph appelé(e) sur ce topic ...
avatarL'homme qu'a vu l'homme qu'a vu l'ours, qu'a mangé l'facteur..
Il y a une rubrique "Bash, Perl, Ruby, Python" : sections/42 wink
avatarTutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall
Déplacement effectué

Comme je ne te le disai pas, Django vient avec un ORB/ORM, c'est à dire que tu ne vas pas avoir à écrire toutes tes requêtes SQL, tu n'aura qu'à faire ton modèle de classes et les accès bdd seront pris en charge par le moteur. En outre, contrairement à PHP, tu n'auras pas à écrire du html avec des morceaux de php...
vince (./4) :
En outre, contrairement à PHP, tu n'auras pas à écrire du html avec des morceaux de php...

tu as des moteurs de templating en PHP aussi, hein... tu n'es pas "obligé" d'écrire du HTML avec morceaux de PHP dedans (même si, en soit, PHP est aussi un langage de templating, et te permet donc de faire un peu ce que tu veux)
avatarTutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall
Déjà il faut distinguer deux choses : le langage de programmation Python, qui permet de faire plein de choses dont des sites web, et le framework Django qui fournit un tas d'outils pratiques pour simplifier la réalisation de sites web.

Pour ma part, autant je trouve que Python est un excellent langage de script, autant je suis beaucoup plus mitigé concernant Django. Mais après en avoir parlé avec Flanker il y a une semaine, il parait que ça s'est beaucoup amélioré dernièrement et que les principaux reproches que je lui faisais il y a ~1 an ont été corrigés.

Du coup pour répondre très rapidement à tes questions en attendant de plus précises :

- Pourquoi Python ?
=> Parce que c'est un langage bien plus cohérent, concis et rapide que PHP*, qui te permettra de coder proprement sans te demander comment hacker ton propre code pour qu'il ne soit pas trop lent à l'exécution et de disposer d'une énorme quantité de bibliothèques standard pour coder à peu près n'importe quoi de façon portable.

- Pourquoi Django ?
=> Parce qu'à condition de coller très strictement à la façon que te propose Django de réaliser un site web, tu iras beaucoup plus vite qu'en faisant tout à la main. Django te propose grosso modo la même chose que la majorité des frameworks web PHP (Symphony & co), à savoir une façon rigoureuse d'organiser et séparer ton code, un ORM (très bien pensé), un moteur de template (un peu moins bien pensé), un mécanisme de routage url <=> page, et une flopée de modules pour toutes les choses très communes dans un site web (pages d'administration auto-générées, gestion des utilisateurs, authentification & contrôle d'accès, etc.).

Flanker aura surement un point de vue plus complet, mais le mieux serait surement que tu commences à regarder à quoi ressemble Python, puis que tu lises dans un second temps les tutos Django qui sont plutôt bien foutus smile

* : c'est bien sûr un avis perso, à part en ce qui concerne la vitesse d'exécution où il n'y a vraiment pas photo ^^
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
J'ai à peu près le même avis que Zeph (grin)

Déjà, connais-tu un peu le Python ? ou connais-tu d'autres langages similaires ?

Pourquoi Python ?
Comme dit Bob, c'est plus cohérent, rapide, concis que PHP. Mais aussi : pas de mauvaises surprises (le == ne renvoie pas vrai quand les objets sont presque égaux), tu peux t'en servir pour tout (scripts système, web, applis lourdes, calcul raisonnablement intensif, ...), le langage est *très* souple (tu peux créer des classes à la volée, c'est pratique en SOAP).

Pourquoi Django ?
D'abord pour la rapidité de développement.
Je devais faire un programme pour enregistrer des livres, avec les auteurs correspondants. Deux classes à écrire (livres et auteurs) où je fais simplement la liste des attributs (titre, ISBN, ...), 3-4 lignes pour dire que je veux utiliser l'interface d'admin par défaut, et c'est à peu près tout pour le code. Django fournit une interface web déjà prête pour remplir les attributs, rechercher des objets, ... Pour faire une API REST ? Pas de problème, ça demande 10 lignes de plus à tout casser. Changer de SQLite en MySQL ? 5 lignes à changer pour remplir les coordonnées du MySQL.

Ensuite, la sécurité : impossible de faire des injections SQL, tu as des protections contre le click-jacking, les CSRF, très facile de protéger les pages, l'authentification est gérée par Django, ...

Pas besoin de réinventer la roue. Django offre beaucoup de choses, mais il y a aussi énormément de libs supplémentaires (tastypie pour faire l'API REST, support de LDAP ou MongoDB dans l'ORM, ... http://www.djangopackages.com pour plus d'infos).

En plus, tu peux faire des scripts en ligne de commande pour interagir avec la base de données, ça évite de faire des curl dans des cron ^^
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
flanker (./7) :
le == ne renvoie pas vrai quand les objets sont presque égaux

arghl hypno
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Exemple classique :
3000 == 03000 => faux
3000 == "3000" => vrai
3000 == "03000" => vrai
"3000" == "3e3" => vrai

Bref, l'opérateur le plus utilisé dans tous les langages du monde est inutilisable en PHP top
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
tain mais c'est gravissime, c'est quoi cette merde ? trigni
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
La magie des langages "pas typés mais un peu quand même en fait" grin

D'ailleurs je reposte ici un lien de Zerosquare qui t'expliquera mieux que personne pourquoi le PHP est un langage heu... controversé : http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Folco (./10) :
tain mais c'est gravissime, c'est quoi cette merde ? trigni

03000=="1536" => vrai cheeky
avatarWebmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca
Ce doit être une valeur octale d'après ce que j'ai compris. C'est fou. fou
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
yep
avatarWebmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca
Pour le coup de l'octal, ce n'est pas si fou que ça, c'est la même chose en C et en beaucoup de langages style C.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
oui, mais l'octal automatiquement interprété à l'intérieur d'une string c'est quand même déjà vachement moins fréquent cheeky
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Kevin > Vrai, mais qui utilise encore de l'octal aujourd'hui ? C'est une feature beaucoup plus nuisible qu'utile.
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
Zerosquare (./17) :
Kevin > Vrai, mais qui utilise encore de l'octal aujourd'hui ? C'est une feature beaucoup plus nuisible qu'utile.

les systèmes de fichiers unix/linux cheeky
avatarWebmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca
Pardon.

Qui de sensé utilise encore de l'octal aujourd'hui ? tongue


(chut Kevin, c'est une blague)
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
Tous les personnages de cartoon, parce qu'ils n'ont que quatre doigts par main cheeky
avatarWebmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca
Joli !
#pointvince#
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
Tout d'abord, merci pour vos réponses.happy
squale92 (./3) :
Il y a une rubrique "Bash, Perl, Ruby, Python" : sections/42 wink.gif
Mmmh oui, je pensais juste que Django n'était pas du script, donc pas à mettre là-dedans. Mais apparemment si, puisque c'est du python grin
vince (./4) :
Django vient avec un ORB/ORM
Hem, euh... késako? (niouu spotted)
flanker (./7) :
Déjà, connais-tu un peu le Python ? ou connais-tu d'autres langages similaires ?
Non je ne connais pas le python (sauf de nom et d'extension cheeky) En langage de scripting, je connais l'Expect (tickle) et le Perl (pas non plus un foudre...), mais je ne suis pas sûr que ça soit dans la même catégorie: on ne peut pas faire de sites webs en perl à ma connaissance?
flanker (./7) :
API REST[...]faire des curl dans des cron
Autres concepts que je ne connais pas..
(nonon je ne suis pas (encore) un cas désespéré)

Sinon le simple fait de ne pas avoir à coder de requêtes sql ni d'html me semble franchement canon top
Enfin concernant l'html, je suis mitigé vu son "potentiel" retour en version 5. Question type: si je veux mettre une vidéo sur mon site web, est-ce facile en python-djangoifié?
avatarL'homme qu'a vu l'homme qu'a vu l'ours, qu'a mangé l'facteur..
redangel (./22) :
vince (./4) :
Django vient avec un ORB/ORM
Hem, euh... késako? (niouu spotted)

Couche de mapping objet-relationnel
En gros, ta base de données relationnelle (mysql, postgre, ...) sert à stocker les données ; mais côté code / appli, tu ne manipule pas des requêtes SQL, mais des objets.
L'ORM fait la correspondance entre la structure de ta DB (tables, clefs étrangères, ...) et les objets manipulés par ton appli.
redangel (./22) :
on ne peut pas faire de sites webs en perl à ma connaissance?

ça ne se fait plus tellement (depuis pas mal d'années), mais c'était plutôt "à la mode", les sites web en Perl, il fut une époque ; avant PHP, principalement.
C'était souvent regroupé dans la catégorie des "CGI" ; me demande si la première version de yN que j'ai connu n'était pas en CGI (possiblement en Perl ? ), d'ailleurs
redangel (./22) :
Enfin concernant l'html, je suis mitigé vu son "potentiel" retour en version 5.

comme langage de présentation pour le web, tu vas avoir du mal à trouver autre chose que HTML ; tu peux difficilement te permettre d'être "mitigé" ^^
avatarTutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall
redangel (./22) :
vince (./4) :
Django vient avec un ORB/ORM
Hem, euh... késako? (niouu spotted)


ORM : Mapping objet-relationnel
ORB : comme dans CORBA, un bus logiciel, aussi appelé middleware

CURL : c'est mort... tombecurl

REST(in peace...) : C'est une architecture client-serveur, pas de notion de contexte coté serveur et interface uniformisée/hiérarchisée
avatarWebmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca
exemple pour l'ORM de Django :
    class Article(models.Model):
        id = models.IntegerField("identifiant", primary_key=True)
        title = models.CharField("titre", max_length=255)
        content = models.TextField("contenu")
        date = models.DateTimeField("date de publication", auto_now=True)

Ça crée une classe avec 4 attributs, qui sera représentée par une table SQL à 4 colonnes.

  mon_article = Article()
  mon_article.title = "premier titre"
  mon_article.content = hello, world"
  mon_article.save()

L'appel à .save() est l'équivalent du SQL "INSERT INTO Article (title, content) VALUES ("premier titre", "hello, world")". Mais sans les problèmes de vérification des données grin

  articles = Article.objects.filter(title="premier titre")

articles contient la liste de tous les articles dont le titre vaut "premier titre". Équivalent du "SELECT * FROM Article WHERE title="premier titre"". Sauf qu'au lieu de te retrouver avec des listes de valeurs, tu as directement des objets.
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
flanker (./25) :
L'appel à .save() est l'équivalent du SQL "INSERT INTO Article (title, content) VALUES ("premier titre", "hello, world")". Mais sans les problèmes de vérification des données biggrin.gif

(je parle à partir du "monde PHP", mais j'ose imaginer que c'est pareil côté Python)

De manière plus générale, la méthode save() de ton ORM va "enregistrer les données", sans que tu n'aies à te soucier de ce que cela signifie réellement.

Autrement dit, tu n'as pas à chercher s'il s'agit d'insérer des données ou d'en updater, par exemple.
Ca veut aussi dire que tu n'as pas à te soucier de savoir dans combien de tables tes données sont stockées : tu enregistres un objet et ses éventuels objets liés, sans avoir à gérer la transaction, sans avoir à réfléchir à l'ordre d'insertion qui soit correct par rapport aux clefs étrangères, ...

Et par dessus ça, assez fréquemment, ton ORM ajoutera une couche d'abstraction du moteur de base données -- autrement dit, ton code "objet" devrait fonctionner avec MySQL / PostgreSQL / ou même des moteurs "NoSQL", sans que tu n'aies à ré-écrire tes requêtes SQL ou le code les exécutant.

(la question d'après c'est "c'est quoi l'inconvénient d'utiliser un ORM ?" ^^ )
avatarTutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall
redangel (./22) :
on ne peut pas faire de sites webs en perl à ma connaissance?

Si, ticalc.org est en Perl.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
squale92 (./23) :
les sites web en Perl, il fut une époque ; avant PHP, principalement. C'était souvent regroupé dans la catégorie des "CGI"
Ah, j'ai eu fait du CGI à l'école; mon prof voulait nous faire faire un espèce de Worms-like jouable sur navigateur. C'était excellent comme projet mais très dur (enfin... trop long par rapport au temps qu'on avait. Je n'avais été qu'à la génération de carte aléatoire qui soit cohérente, ie avec des bords).
Oui je suppose qu'à la place du C, on pourrait utiliser n'importe quoi pour faire des pages web...
squale92 (./23) :
comme langage de présentation pour le web, tu vas avoir du mal à trouver autre chose que HTML ; tu peux difficilement te permettre d'être "mitigé" ^^
Oui non, ce que j'ai écrit c'était "canon de ne plus s'occuper d'html", puis "en fait il faudra bien que j'en fasse encore, donc je suis mitigé sur le fait que python me fasse oublier l'html", voilà ^^
Kevin Kofler (./27) :
Si, ticalc.org est en Perl.
Ah? Ok, belle preuve! top
Mais je veux dire... pour moi l'intérêt de Perl, c'est de scripter vite et bien, pas de gérer un monstre? Non pas que ça ne le fasse pas, mais je n'aurais pas crû ça "adapté".
Sans doute ai-je tord.

Bon j'ai commencé mon apprentissage en Python ^^
Première critique: je lis ici que Python a commencé sur un Mac en 1991, et aujourd'hui en 2012, impossible de faire un antislash sur mon macbook pro... tsss bon, j'ai rebindé le raccourci Maj+Option+/, mais quand même, ça fait tâche ^^
Autre remarque: Python3 a cassé la compatibilité ascendante?! Ca n'a pas fait un tollé, ça??

Sinon ça a l'air plutôt cool, les types reconnus à la volée, l'interversion de variables, et le triple guillemet qui permet de s'affranchir des échappements top
avatarL'homme qu'a vu l'homme qu'a vu l'ours, qu'a mangé l'facteur..
Parfois, casser la compatibilité ascendante permet de tirer un trait sur des mauvais choix passés pour ne pas avoir à se les traîner sous forme de hacks pendant des années. L'équipe de Python a fait ce choix en augmentant le numéro de version majeur pour bien indiquer que c'était incompatible, c'est pénible sur le moment mais à mon avis c'est une décision très saine sur le long terme. Mais bon c'est un sujet de troll à part entière.
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
(pencil Bob)
redangel (./28) :
et le triple guillemet qui permet de s'affranchir des échappements

Oui, c'est très à la mode de faire dans l'écologie top
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !