9
votes

Quel est le chemin de chemin pour template_dirs dans django Params.py lors de l'utilisation de Virtualenv

J'utilise virtualenv et je veux savoir ce que le template_dirs dans paramètres.py devrait être, par exemple si je fais un dossier de modèles à la racine de mon projet Dossier.


0 commentaires

6 Réponses :


18
votes

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> xxx pré>

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/'),
)


6 commentaires

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?



3
votes

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 xxx


1 commentaires

Le paramètre template_dirs doit être une liste ou un tuple.



1
votes

Si vous utilisez Django 1.9, il est recommandé d'utiliser base_dir au lieu de Project_Dir. xxx


0 commentaires

15
votes

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',
            ],
        },
    },
]


2 commentaires

'est': ['[Nom du projet] / Modèles'], # Remplacez-le par votre nom de projet Nom du projet sans crochets: 'Nom du projet / Modèles'


Le support est là pour symboliser où vous entrez votre nom de projet spécifique.



-1
votes

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'),
)


3 commentaires

Comment est-ce différent des réponses déjà postées? Tout ce que vous avez fait était lié rejoindre comme global plutôt que d'utiliser le os.path.join () 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 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 pour la même valeur exacte toutefois.



0
votes

template_dirs obsolète Ce paramètre est obsolète depuis Django version 1.8.

obsolète xxx

corrige xxx


0 commentaires