Ich weiß, dass dies nicht im Django-Tutorial enthalten ist, und schade, aber es ist besser, relative Pfade für Ihre Pfadvariablen einzurichten. Sie können es so einrichten:
import os
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
...
MEDIA_ROOT = PROJECT_PATH + '/media/'
TEMPLATE_DIRS = (
PROJECT_PATH + '/templates/',
)
Auf diese Weise können Sie Ihr Django-Projekt verschieben und Ihre Pfadwurzeln werden automatisch aktualisiert. Dies ist nützlich, wenn Sie Ihren Produktionsserver einrichten.
Zweitens ist Ihr TEMPLATE_DIRS-Pfad verdächtig. Es sollte auf das Stammverzeichnis Ihres Vorlagenverzeichnisses verweisen. Es sollte auch in einem Trailing enden /
.
Ich werde hier nur vermuten, dass das .../admin/
Verzeichnis nicht Ihr Vorlagenstamm ist. Wenn Sie dennoch absolute Pfade schreiben möchten, sollten Sie den Verweis auf das Admin-Vorlagenverzeichnis entfernen.
TEMPLATE_DIRS = (
'C:/django-project/myapp/mytemplates/'
)
Vor diesem Hintergrund sollten die Vorlagenlader standardmäßig so eingerichtet sein, dass sie rekursiv in Ihre App-Verzeichnisse wechseln, um Vorlagendateien zu finden.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
# 'django.template.loaders.eggs.load_template_source',
)
Sie sollten die Admin-Vorlagen nicht kopieren müssen, es sei denn, Sie möchten speziell etwas überschreiben.
Sie müssen eine Syncdb ausführen, wenn Sie sie noch nicht ausgeführt haben. Sie müssen Ihre Mediendateien auch statisch serverisieren, wenn Sie Django über Runserver hosten.
os.path.join
, Pfade an das Basisverzeichnis anzuhängen.Wenn Sie die installierten Django-Einstellungen verwenden, warum nicht einfach die eingebauten, vordefinierten BASE_DIR und TEMPLATES verwenden? In der installierten Pip Django (v1.8) bekomme ich:
quelle
os.path.join(BASE_DIR, 'templates')
Option, damit der Pfad plattformunabhängig ist.Intelligente Lösung in Django 2.0.3 zum Speichern von Vorlagen im Projektverzeichnis (
/root/templates/app_name
):settings.py
Fügen Sie in views.py einfach einen solchen Vorlagenpfad hinzu:
quelle
Für Django 1.6.6:
Auch statisch und Medien für den Debug- und Produktionsmodus:
In urls.py müssen Sie hinzufügen:
In Django 1.8 können Sie Vorlagenpfade, Backend und andere Parameter für Vorlagen in einem Wörterbuch ( settings.py ) festlegen :
Offizielle Dokumente.
quelle
Ich hatte auch Probleme mit diesem Teil des Tutorials (verwendetes Tutorial für Version 1.7).
Mein Fehler war, dass ich nur die Zeichenfolge 'Django Administration' bearbeitet und dem Handbuch nicht genügend Aufmerksamkeit geschenkt habe.
Dies ist die Zeile von django / contrib / admin / templates / admin / base_site.html :
Aber nach einiger Zeit und Frustration wurde klar, dass es die Anweisung 'site_header oder default: _' gab, die entfernt werden sollte. Nach dem Entfernen der Anweisung (wie im Beispiel im Handbuch funktionierte alles wie erwartet).
Beispielhandbuch:
quelle
Okay 😁 Nehmen wir an, Sie haben ein brandneues Projekt. Wenn ja, gehen Sie in die
settings.py
Datei und suchenTEMPLATES
Sie, sobald Sie es gefunden haben. Fügen Sie einfach diese Zeileos.path.join(BASE_DIR, 'template')
ein.'DIRS'
Am Ende sollten Sie Folgendes erhalten:Wenn Sie wissen möchten, wo sich Ihr BASE_DIR-Verzeichnis befindet, geben Sie die folgenden drei einfachen Befehle ein:
Sobald Sie in der Shell sind:
PS: Wenn Sie Ihren Vorlagenordner mit einem anderen Namen benannt haben, würden Sie ihn auch hier ändern.
quelle
In Django 2.2 wird dies hier erklärt
https://docs.djangoproject.com/de/2.2/howto/overriding-templates/
quelle
Im Grunde
BASE_DIR
ist Ihr Django-Projektverzeichnis, das gleiche Verzeichnis, in dem es sichmanage.py
befindet.quelle