J'ai lancé une application dans Google App Engine dès sa sortie, pour jouer avec la technologie et travailler sur un projet pour animaux de compagnie auquel je pensais depuis longtemps mais que je n'avais jamais réussi à démarrer. Le résultat est BowlSK . Cependant, au fur et à mesure qu'il grandit et que des fonctionnalités ont été ajoutées, il est devenu vraiment difficile de garder les choses organisées - principalement en raison du fait qu'il s'agit de mon premier projet python, et je n'en savais rien jusqu'à ce que je commence à travailler.
Ce que j'ai:
- Le niveau principal contient:
- tous les fichiers .py (je ne savais pas comment faire fonctionner les packages)
- tous les modèles .html pour les pages de niveau principal
- Sous-répertoires:
- dossiers séparés pour css, images, js, etc.
- dossiers contenant des modèles .html pour les URL de sous-répertoire
Exemple:
http://www.bowlsk.com/ correspond à HomePage (package par défaut), modèle à "index.html"
http://www.bowlsk.com/games/view-series.html?series=7130 correspond à ViewSeriesPage (encore une fois, package par défaut), modèle à "games / view-series.html"
C'est dégueulasse. Comment restructurer? J'avais 2 idées:
Dossier principal contenant: appdef, index, main.py?
- Sous-dossier pour le code. Cela doit-il être mon premier colis?
- Sous-dossier pour les modèles. La hiérarchie des dossiers correspondrait à la hiérarchie des packages
- Sous-dossiers individuels pour css, images, js, etc.
Dossier principal contenant appdef, index, main.py?
- Sous-dossier pour code + modèles. De cette façon, j'ai la classe de gestionnaire juste à côté du modèle, car à ce stade, j'ajoute beaucoup de fonctionnalités, donc les modifications apportées à l'une signifient des modifications à l'autre. Encore une fois, dois-je avoir ce nom de dossier comme premier nom de package pour mes classes? Je voudrais que le dossier soit "src", mais je ne veux pas que mes classes soient "src.WwhatPage"
Existe-t-il une meilleure pratique? Avec Django 1.0 à l'horizon, y a-t-il quelque chose que je peux faire maintenant pour améliorer ma capacité à m'intégrer avec celui-ci lorsqu'il deviendra le moteur officiel de création de modèles GAE? Je commencerais simplement à essayer ces choses et à voir ce qui me semble le mieux, mais le support de refactoring de pyDev ne semble pas gérer très bien les mouvements de paquets, donc ce sera probablement une tâche non triviale de remettre tout cela en marche.