Quel est le meilleur emplacement pour placer des modèles dans un projet Django?
Réponses
Trop de publicités?Du Django livre, chapitre 4:
Si vous ne pouvez pas penser à un endroit évident pour mettre vos modèles, nous vous recommandons de la création d'un répertoire de modèles au sein de votre projet Django (c'est à dire, dans le monsite répertoire que vous avez créé dans Le chapitre 2, si vous avez suivi avec nos exemples).
C'est exactement ce que je fais, et il a travaillé très bien pour moi.
Mon répertoire de la structure ressemble à quelque chose comme ceci:
/media
pour tous mes CSS/JS/images etc/templates
de mes modèles/projectname
pour le principal projet de code (c'est à dire le code Python)
Le suivi de Dominic et dlrust,
Nous utilisons un setuptools source de distribution (sdist) pour le paquet notre projet django et applications à déployer dans nos environnements différents.
Nous avons constaté que les modèles et les fichiers statiques doivent être, en vertu de l'application django répertoires de sorte qu'ils peuvent être emballés par setuptools.
Par exemple, notre modèle statique et chemins de ressembler à:
PROJECT/APP/templates/APP/template.html
PROJECT/APP/static/APP/my.js
Pour que cela fonctionne, le MANIFESTE.dans doit être modifié (voir http://docs.python.org/distutils/sourcedist.html#the-manifest-in-template)
Un exemple de MANIFESTE.dans:
include setup.py
recursive-include PROJECT *.txt *.html *.js
recursive-include PROJECT *.css *.js *.png *.gif *.bmp *.ico *.jpg *.jpeg
Aussi, vous devez confirmer votre django fichier de paramètres que l' app_directories chargeur est dans votre TEMPLATE_LOADERS. Je pense qu'il est là par défaut de django 1.4.
Un exemple de django modèle de paramètres de chargeurs:
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
Juste au cas où vous vous demandez pourquoi nous les utilisons sdists au lieu de simplement faire face rsync fichiers; il fait partie de notre gestion de la configuration de flux de travail où nous avons une construction unique archive qui est déployé avec le PIP inchangée dans l'essai, l'acceptation et les environnements de production.
Vous pouvez également envisager de placer vos modèles dans une base de données, à l'aide de django-dbtemplates . Il est également configuré pour la mise en cache et l’application django-reversion qui vous permet de conserver les anciennes versions de vos modèles.
Cela fonctionne assez bien, mais je préférerais un peu plus de flexibilité du côté import / synchronisation vers / depuis le système de fichiers.