Quel est pour vous arrêter à l'aide de myproduct.myproduct
? Ce que vous devez atteindre environ est composé de:
django-admin.py startproject myproduct
cd myproduct
mkdir myproduct
touch myproduct/__init__.py
touch myproduct/models.py
touch myproduct/views.py
et ainsi de suite. Serait-il aider si je disais views.py
n'a pas à être appelés views.py
? Pourvu que vous pouvez donner un nom, sur le python path, une fonction (généralement package.package.les vues.function_name) il vous a traité. Simple que cela. Toutes les ce "projet"/"application" des choses est juste les paquets python.
Maintenant, comment êtes-vous censé faire? Ou plutôt, comment pourrais-je le faire? Eh bien, si vous créez un élément important de fonctionnalités réutilisables, comme, disons, un balisage de l'éditeur, c'est lorsque vous créez un "haut niveau de l'application" qui peuvent contenir de l' widgets.py
, fields.py
, context_processors.py
etc - toutes les choses que vous pouvez importer.
De même, si vous pouvez créer quelque chose comme un blog dans un format qui est assez générique à travers installe, vous pouvez l'envelopper dans un app, avec son propre modèle, le contenu statique dossier, etc, et configurer une instance d'un projet django utiliser cette application.
Il n'existe pas de règles strictes et rapides dire que vous devez le faire, mais il est l'un des objectifs du cadre. Le fait que tout, les modèles inclus, vous permet de comprendre à partir de certains courants de base signifie que votre blog doit être bien ajusté dans une autre configuration, il suffit de par sa propre partie.
Toutefois, pour répondre à votre préoccupation, oui, rien ne dit que vous ne pouvez pas travailler avec le haut niveau de dossier de projet. C'est ce que les applications que faire et vous pouvez le faire si vous le voulez vraiment. J'ai tendance à ne pas, cependant, pour plusieurs raisons:
- Django par défaut du programme d'installation de ne pas le faire.
- Souvent, je veux créer une application principale, donc je créer un, souvent appelés
website
. Cependant, à une date ultérieure que je veuille mettre au point des fonctions de ce site. Avec une vue de la rendre amovible (si oui ou non j'ai jamais fais) j'ai tendance à ensuite créer un répertoire séparé. Cela signifie aussi que je peux déposer dit fonctionnalité vient en séparation de paquet de la config et de supprimer le dossier, plutôt que d'un complexe de supprimer le droit des url à partir d'un mondial urls.py dossier.
- Très souvent, même quand je veux faire quelque chose d'indépendant, il a besoin d'un endroit pour vivre, tandis que je m'occupe d'elle / de le rendre indépendant. Fondamentalement, le cas ci-dessus, mais pour les trucs que je ne l'intention de le rendre générique.
- Mon dossier de niveau supérieur contient souvent un peu d'autres choses, y compris mais non limité à wsgi des scripts, des scripts sql, etc.
- de django reinhardt, de la gestion des extensions de s'appuyer sur des sous-répertoires. Il est donc logique de nom des paquets de façon appropriée.
En bref, la raison, la convention est le même que toute autre convention - il aide quand il s'agit d'autres personnes à travailler avec votre projet. Si je vois, fields.py
immédiatement j'attends le code de la sous-classe de django reinhardt, champ, alors que si je vois inputtypes.py
j'ai peut-être pas si clair sur ce que cela signifie que sans le regarder.