2015-01-03 7 views
10

Mi sono rotto la testa per un giorno intero ma non riesco a capire il problema. È successo dopo aver copiato il mio progetto da una macchina all'altra.Django: contenuto statico non trovato

Settings.py

STATIC_URL = '/static/' 
STATIC_ROOT = 'staticfiles' 
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
) 

citati 'django.contrib.staticfiles' in INSTALLED_APPS pure.

struttura di cartelle:

Django-Projects (root) 
    project 
    app 
    static 
     css 
      home.css 
     js 
    manage.py 

Template:

{% load staticfiles %} 

<link rel="stylesheet" href="{% static 'css/home.css' %}"> 

urls.py

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'', include('app.urls')), 
) 

Si genera un errore nella console all'apertura del modello:

GET http://127.0.0.1:8000/static/css/home.css 
Failed to load resource: the server responded with a status of 404 (NOT FOUND) 

Cosa potrebbe esserci di sbagliato qui? Per favore aiutatemi. Molte grazie!

+0

puoi pubblicare il tuo urls.py come una parte della questione? – avenet

+0

@avenet: Fatto. – moaglee

+3

DEBUG è impostato su True? Hai "django.contrib.staticfiles" in INSTALLED_APPS? –

risposta

1

Django default BASE_DIR cercherà il contenuto statico per te. Ma nel tuo caso hai cambiato la strada prima del progetto iniziale. Quindi, per questo nel tuo caso dovete cambiare il vostro BASE_DIR come questo .. poi solo file statico servirà correttamente

BASE_DIR = os.path.dirname(os.path.abspath(__file__) + '../../../') 

Aggiornato:

non ho visto quel commento. ! DEBUG = True solo per lo sviluppo e si imposta come False così sarà Django uso STATIC_ROOT = 'staticfiles' per servire il contenuto statico sull'ambiente di produzione ... Grazie

5

Nella tua settings.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
) 
STATIC_URL = '/static/' 

Poi, nel tuo file di modello:

<link rel="stylesheet" href="{{ STATIC_URL }}css/home.css"> 

Con la struttura di directory root che hai mostrato, penso che l'impostazione sopra dovrebbe funzionare. Non l'ho provato però. Fammi sapere se funziona.

+2

Questo mi dà l'errore: 'The STATICFILES_DIRS sett ing non dovrebbe contenere l'impostazione STATIC_ROOT' ... i miei pensieri: http://stackoverflow.com/a/38387854/2586761 – ptim

4

impostare DEBUG=True e vedere se funziona .. questo significa che django servirà i file statici e non httpserver che in questo caso non esiste poiché si esegue l'app localmente.

3

Ho cercato questo problema per un'intera giornata. set DEBUG = True ALLOWED_HOSTS = [] andrà bene.

0

Non è necessario fare riferimento a STATIC_ROOT = 'staticfiles'

Proprio così:

STATIC_URL = '/static/' 

STATICFILES_DIRS = (
      os.path.join(BASE_DIR, "static"), 
)