2016-07-11 7 views
0

Ich habe eine html Datei namens base.html in einem Ordner namens html. Es gibt zwei Verzeichnisse auf dem gleichen Niveau wie html - js und css die statischen Ressourcen enthalten. Die base.html bezieht sich diese statischen Ressourcen durch relative Pfade, wieDjango kann JS- und CSS-Dateien nicht als statische Ressourcen laden

<script type="text/javascript" src="../js/debounce.js"></script> 
<link rel="stylesheet" href="../css/base.css"> 

Es funktioniert wie erwartet. Jetzt habe ich die gesamte Verzeichnisstruktur in mein django Projekt kopiert. Dies ist, wie der Stammordner ecom wie folgt aussieht:

enter image description here

Das customviews Verzeichnis der html enthält js und css Verzeichnisse, sowie eine myview.py Datei, die in der refered ist urls.py Datei im ecom Unterverzeichnis wie:

from customviews.myview import * 
urlpatterns = [url(r'^admin/', admin.site.urls), 
       url(r'^time/$', current_datetime), 
       url(r'^base/', base)] 

Die base Methode in myviews.py läuft einfach wie folgt:

def base(request): 
    return render_to_response("base.html") 

Und der relevante Teil der settings.py sieht wie folgt aus:

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [], 
     'APP_DIRS': True, 
     'DIRS': [os.path.join(dirfunc(dirfunc(__file__)), 'templates').replace('\\', '/'), 
       os.path.join(dirfunc(dirfunc(__file__)), 'customviews/html').replace('\\', '/'), 
       os.path.join(dirfunc(dirfunc(__file__)), 'customviews/js').replace('\\', '/'), 
       os.path.join(dirfunc(dirfunc(__file__)), 'customviews/css').replace('\\', '/')], 
     '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', 
      ], 
     }, 
    }, 
] 

Wenn ich den Server anwerfen und Last base, nur der Grund html gerendert wird, fehlen css und js. Wie lade ich beides?

+0

Wie sehen Ihre statischen/Medienkonfigurationseinstellungen aus? – jape

+0

Ich habe keine, denke ich. Ich meine, ich habe den Standarddateien nichts hinzugefügt. Ich habe hier etwas über sie gelesen: https://docs.djangoproject.com/en/1.9/ref/settings/#std:setting-STATICFILES_FINDERS, konnte aber nicht verstehen, wie man sie anwendet. Am unteren Rand von 'settings.py' scheint eine Zeile' STATIC_URL = '/ static /' 'zu liegen. – SexyBeast

Antwort

3

Sie müssen die statischen Ressourcenordner in Ihren Vorlagenverzeichnissen nicht einschließen. Was Sie tun müssen, ist setzen Sie Ihre STATICFILES_DIRS unter Einstellungen und enthalten eine static tag in Ihren Vorlagen diese Ressourcen aufrufen.

+0

Also in diesem Fall würde die Verzeichnisliste aus den vollständigen Pfaden zu meinen css und js Ordnern bestehen? – SexyBeast

+0

Wenn Sie alle statischen Ressourcen in einem Ordner haben, können Sie einfach auf diesen Ordner zeigen und den Rest des Pfads mit dem statischen Tag einschließen. Stellen Sie sicher, dass sich im Ordner keine Dateien befinden, die Sie nicht veröffentlichen möchten. Ich würde empfehlen, sie in ein Unterverzeichnis namens "static" innerhalb von ecom zu schreiben und dann würde das statische Tag dort aussehen, ohne dass du darauf zeigst. – miyamoto

+0

Nein Ich habe mehrere Ordner, wie Bilder, CSS, JS, die für Wartungszwecke getrennt sein müssen. Und was muss ich mit der Art tun, wie sie im HTML referenziert werden? Derzeit werden sie als '../ js/foo.js' oder' ../ images/test.jpg' bezeichnet. Wie werden sich diese Wege ändern? – SexyBeast

Verwandte Themen