J'utilise virtualenv et je veux savoir ce que le template_dirs code> dans
paramètres.py code> devrait être, par exemple si je fais un dossier de modèles à la racine de mon projet Dossier. P>
6 Réponses :
Vous devez spécifier le chemin absolu sur votre dossier de modèle. Toujours utiliser des barres obliques, même sous Windows.
Par exemple, si votre dossier de projet est "/ home / djangouser / projects / myProject" (Linux) ou 'c: \ projects \ myProject \' (Windows), votre template_dirs Comme ceci: p> Vous pouvez utiliser la variable de projet_root spécifiée et générer le chemin absolu en le rejoignant avec le chemin relatif de votre dossier de modèle. Cela a l'avantage que vous n'avez besoin que de modifier votre projet_root, si vous copiez le projet à un emplacement différent. Vous devez importer le module OS pour le faire fonctionner: P> # add at the beginning of settings.py
import os
# ...
TEMPLATE_DIRS = (
os.path.join(PROJECT_ROOT, 'templates/'),
)
Merci d'avoir répondu. Son disant projet_root non défini pour la deuxième réponse.
mon dossier de projet est à / utilisateurs / andrewwelch / sites / env / et je présume que je devrais changer cela si je le mettit sur un serveur distant
Oui, ma faute. J'ai remarqué que project_root n'est pas une variable standard et m'a été ajouté à des paramètres.py je levai les yeux. C'est fondamentalement la même chose comme les suggestions ici: Stackoverflow.com/ Questions / 4919600 / ...
Merci pour ça. Y a-t-il un moyen de tester ce que cette variable de projet est renvoyée?
Je peux le faire avec la coquille Python. Merci.
@eminor Toute idée de la raison pour laquelle nous utilisons des barres obliques avant même sur Windows? Ce code est-il donc plus portable pour les plates-formes non-Windows?
Le projet_dir n'a pas été défini ... Le projet_dir n'est pas une variable. c'est un répertoire / un chemin d'accès à l'endroit où le dossier "Modèles" est situé. Cela devrait aider
Le paramètre template_dirs code> doit être une liste ou un tuple.
Si vous utilisez Django 1.9, il est recommandé d'utiliser base_dir au lieu de Project_Dir.
Si vous travaillez avec une version plus récente de Django, vous devrez peut-être l'ajouter à la liste DIR qui est à l'intérieur des paramètres .PY sous templates.
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['[project name]/templates'], # Replace with your project name 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
'est': ['[Nom du projet] / Modèles'], # Remplacez-le par votre nom de projet CODE> Nom du projet sans crochets:
'Nom du projet / Modèles' Code>
Le support est là pour symboliser où vous entrez votre nom de projet spécifique.
Ajout de cela dans Web / Paramètres.py Résolu tout pour moi. J'espère que cela peut vous aider aussi.
import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) from os.path import join TEMPLATE_DIRS = ( join(BASE_DIR, 'templates'), )
Comment est-ce différent des réponses déjà postées? Tout ce que vous avez fait était lié code> rejoindre code> comme global plutôt que d'utiliser le os.path.join () code> orthographe.
quand j'ai utilisé les réponses déjà postées. Je pourrais obtenir une erreur disant de base_dir ne se trouve pas
base_dir code> est juste un nom (bien qu'il ressemble au modèle de projet de Django 1.9 et de définir le nom maintenant, voir GITUB.COM/DJANGO/DJANGO/BLOB/MASTER/DJANGO/CONF/... ). Quel est le chemin du chemin de template_dirs dans django Params.py lors de l'utilisation de Virtualenv utilisé le nom
Project_dir code> pour la même valeur exacte toutefois.
template_dirs strong> obsolète Ce paramètre est obsolète depuis Django version 1.8. P>
obsolète code> p>
xxx pré>
corrige code> p>
xxx pré> blockQuote>