2010-03-30 7 views
6

Je suis relativement nouveau sur python et le moteur d'application, et je viens de terminer mon premier projet. Il se compose de plusieurs fichiers * .py (généralement un fichier py pour chaque page du site) et respectivement des fichiers temple pour chaque fichier py. En outre, j'ai un gros fichier PY qui a beaucoup de fonctions communes à beaucoup de pages, j'ai aussi déclaré les classes de db.Model (c'est le type de datastore).Structure du projet Python et App Engine

Ma question est quelle est la convention (s'il y en a une) d'organiser ces fichiers. Si je crée un model.py avec les classes de banque de données, devrait-il être dans un paquet différent? Où devrais-je mettre mes fichiers modèles et tous les fichiers py qui gèrent chaque page (doivent-ils être dans le même répertoire que le gros fichier PY commun)?

J'ai essayé de chercher MVC et de telles implémentations en ligne mais il y en a très peu.

Merci,

Joel

Répondre

3

Je l'habitude d'organiser mes projets de cette façon:

project 
    main.py 
    README 
    models 
     bar.py 
     foo.py 
    views 
     foolist.hml 
     barlist.hml 
    controllers 
     controller1.py 
     controller2.py 
    api 
     controllerapi.py 
    helpers 
     utilities.py 
    lib 
     extfoo.py 
    db 
    foo.db 
    test 
    test.py 

Regardez ce post; C'est un très bon article sur la façon de structurer un projet (pas en python mais peu importe).

+0

Merci pour la réponse rapide et la référence à un très bon article! J'apprécierais si vous pouvez clarifier quelques choses pour moi: 1) pourquoi utiliseriez-vous un fichier modèle différent pour chaque page? Il semble que généralement la plupart des pages utilisent les mêmes types (modèles) dans leurs pages, il est donc difficile de les séparer. 2) Si je comprends bien - controller1.py aura un gestionnaire pour foo et controll2 aura un gestionnaire pour bar, non? Ensuite, si vous souhaitez effectuer des modifications dans le magasin de données par exemple, vous appelez une fonction dans utilities.py. Ai-je bien compris? Merci! – Joel

+0

Il suffit de se concentrer sur la structure des répertoires et non sur ce que je mets dedans, c'est juste un exemple :) Vous pouvez utiliser un seul fichier pour tous les modèles et un fichier pour tous les contrôleurs! J'utilise généralement une structure comme celle-ci quand je développe sur le web (en utilisant gae \ web.py). – systempuntoout

+0

fera :) Je voulais juste m'assurer si par "contrôleurs" vous voulez dire le fichier qui détient les gestionnaires. Et une dernière chose (je promets): Fondamentalement "contrôleurs" et "modèles" sont des paquets (qui, d'après ce que je comprends, doivent contenir le fichier _init_.py) alors que views est un répertoire régulier (pas de fichier _init.py), non? – Joel

3

En général, j'organiser comme ceci:

project/ 
    main.py 
    models.py 
    app.yaml 
    index.yaml 
    templates/ 
    main.html 
    foo.html 
    ... 
    styles/ 
    project.css 
    js/ 
    jquery.js 
    project.js 
    images/ 
    icon.png 
    something.jpg 

Et je tous mes gestionnaires à main.py, tous mes modèles dans models.py, etc.

Si j'ai beaucoup de gestionnaires, et je peux facilement diviser les fonctionnalités de certains gestionnaires des autres (comme les gestionnaires de file d'attente de tâches vs gestionnaires de demande vs xmpp/gestionnaires de messagerie) Je vais ajouter un autre foo_handlers.py au mélange, mais habituellement je les entasse tous dans main.py

Mais alors un gain, j'ai tendance à ne pas écrire des applications Python App Engine extrêmement complexes ...

+0

Merci! très utile. Où placeriez-vous vos dossiers CSS «stylesheet» et «javascript»? – Joel

+0

Édité ma réponse pour inclure JS, CSS et images. Mon point principal est que la plupart des gestionnaires sont assez courts et gentils, et deviendront en fait plus compliqué le plus de fichiers que vous devez avoir ouverts pour faire n'importe quoi. –