Je sais que ce n'est pas dans le didacticiel Django, et c'est dommage, mais il est préférable de définir des chemins relatifs pour vos variables de chemin. Vous pouvez le configurer comme ceci:
import os
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
...
MEDIA_ROOT = PROJECT_PATH + '/media/'
TEMPLATE_DIRS = (
PROJECT_PATH + '/templates/',
)
De cette façon, vous pouvez déplacer votre projet Django et les racines de votre chemin se mettront à jour automatiquement. Ceci est utile lorsque vous configurez votre serveur de production.
Deuxièmement, il y a quelque chose de suspect dans votre chemin TEMPLATE_DIRS. Il doit pointer vers la racine de votre répertoire de modèles. En outre, il devrait également se terminer par un suivi /
.
Je vais juste deviner ici que le .../admin/
répertoire n'est pas votre racine de modèle. Si vous souhaitez toujours écrire des chemins absolus, vous devez supprimer la référence au répertoire du modèle d'administration.
TEMPLATE_DIRS = (
'C:/django-project/myapp/mytemplates/'
)
Cela étant dit, les chargeurs de modèles par défaut doivent être configurés pour parcourir de manière récursive dans les répertoires de vos applications pour localiser les fichiers de modèle.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
# 'django.template.loaders.eggs.load_template_source',
)
Vous ne devriez pas avoir besoin de copier les modèles d'administration, sauf si vous souhaitez spécifiquement écraser quelque chose.
Vous devrez exécuter un syncdb si vous ne l'avez pas encore exécuté. Vous devrez également serveur statiquement vos fichiers multimédias si vous hébergez django via runserver.
os.path.join
pour ajouter des chemins au répertoire de base.Si vous utilisez les paramètres Django tels qu'installés, pourquoi ne pas utiliser simplement son BASE_DIR et ses TEMPLATES intégrés et prédéfinis? Dans le pip Django installé (v1.8), j'obtiens:
la source
os.path.join(BASE_DIR, 'templates')
pour que le chemin soit indépendant de la plate-forme.Solution intelligente dans Django 2.0.3 pour conserver les modèles dans le répertoire du projet (
/root/templates/app_name
):settings.py
dans views.py ajoutez simplement un tel chemin de modèle:
la source
Pour Django 1.6.6:
Aussi statique et média pour le débogage et le mode production:
Dans urls.py, vous devez ajouter:
Dans Django 1.8, vous pouvez définir les chemins des modèles, le backend et d'autres paramètres pour les modèles dans un dictionnaire ( settings.py ):
Documents officiels.
la source
J'ai également eu des problèmes avec cette partie du tutoriel (tutoriel utilisé pour la version 1.7).
Mon erreur a été que je n'ai édité que la chaîne «administration Django» et que je n'ai pas prêté suffisamment d'attention au manuel.
Voici la ligne de django / contrib / admin / templates / admin / base_site.html :
Mais après un certain temps et de la frustration, il est devenu clair qu'il y avait l'instruction 'site_header ou default: _', qui devrait être supprimée. Donc, après avoir supprimé l'instruction (comme l'exemple du manuel, tout a fonctionné comme prévu).
Exemple de manuel:
la source
D'accord 😁 Disons que vous avez un tout nouveau projet, si c'est le cas, vous iriez au
settings.py
fichier et le rechercher uneTEMPLATES
fois que vous l'avez trouvé, il vous suffit de coller cette ligneos.path.join(BASE_DIR, 'template')
à'DIRS'
la fin, vous devriez obtenir quelque chose comme ceci:Si vous voulez savoir où se trouve votre répertoire BASE_DIR, tapez ces 3 commandes simples:
Une fois que vous êtes dans la coquille:
PS: Si vous avez nommé votre dossier de modèles avec un autre nom, vous le changeriez ici aussi.
la source
Dans django 2.2, ceci est expliqué ici
https://docs.djangoproject.com/en/2.2/howto/overriding-templates/
la source
Dans django 3.1, allez dans les paramètres de votre projet et importez le système d'exploitation
la source
BASE_DIR
est essentiellement le répertoire de votre projet django, le même répertoire où semanage.py
trouve.la source