101 votes

Quel est le meilleur emplacement pour placer des modèles dans un projet Django?

Quel est le meilleur emplacement pour placer des modèles dans un projet Django?

99voto

dlrust Points 1363

Placé dans <PROJECT>/<APP>/templates/<APP>/template.html pour les modèles spécifiques à une application permettant de rendre l'application réutilisable ailleurs.

Pour les modèles "globaux" généraux, je les mets dans <PROJECT>/templates/template.html

52voto

Dominic Rodger Points 44489

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)

9voto

thesurfinganalyst Points 111

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.

1voto

SleighBoy Points 412

C’est plus un choix personnel au niveau du projet. Si vous parlez d'applications qui doivent être connectables, un répertoire de modèles dans votre application est l'emplacement par défaut. Mais dans l’ensemble du projet, c’est ce qui vous convient le mieux.

0voto

tonemcd Points 161

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X