Referenzierung Bild in CSS mit relativen Pfad funktioniert nicht in Django
Bin ich mit Django 1.3 mit built-in static app.
Meine statische Ordner-Struktur ist wie folgt:
static/
css/
main.css
img/
js/
Also habe ich versucht, die Referenz-Bilder unter static/css/img/
Ordner von CSS wie dieses:
background:url('img/btn_white.gif') repeat-x;
Aber die Bilder, die don ' E zeigen. Wenn ich überprüfen Elemente in Chrom, ich fand das Bild Weg http://localhost/mysite/static/css/main.css/img/btn_white.gif/
Das ist sehr komisch, da diese relativen Pfad haben sollte verwiesen static/css/
Ordner statt main.css
. Also habe ich versucht zu ändern, Weg zu sein url('../img/btn_white.gif')
, und es funktioniert in Chrome und Firefox aber nicht im IE.
Ich bin ziemlich sicher, dass dieses problem bezieht sich auf Django, weil in meinem reinen HTML/CSS, ist dieser relative Pfad funktioniert Prima. Ich habe auch versucht, css in den media Ordner und das problem ist das gleiche.
Meine Einstellungen im Zusammenhang mit der statischen app:
in settings.py:
STATIC_ROOT = os.path.join(os.path.dirname(__file__),'static').replace('\\','/')
STATIC_URL = 'http://localhost/mysite/static/'
in urls.py:
(r'^static/(?P<path>.*)/$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
Verwandte Frage: Ist ein relativer Pfad in einer CSS-Datei relativ zur CSS-Datei?
- Gehören die
<link>
tag sind Sie mit Ihrer Vorlage. - type="text/css" href="{{ STATIC_URL }}css/main.css" />
- Hmm, ich habe gerade realisiert, dass Sie zeigen eine Struktur von
static/css/img
. Meinst du fürimg
untercss
Verzeichnis oder side-by-side? Wenn gewollt, könnten Sie versuchen, verschieben Sie eine Ebene, dann dieurl(../img/btn.gif)
syntax wäre richtig. - Akzeptieren Sie meine Antwort?
- wie sagte - wenn eine Antwort löst deine Frage, sollten Sie das Häkchen es.
- sorry das wusste ich nicht. Bereits markiert es vor einigen Tagen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem verursacht, indem Sie Ihre URLconf, speziell das Muster:
Dies bedeutet, dass die URL muss Ende einen Schrägstrich und für es zu die diesem Muster entsprechen. d.h. die folgende URL nicht mit: (weil es nicht mit einem nachgestellten Schrägstrich)
Komisch ist, dass es hat Arbeit. Der Grund dafür ist Django ' s
APPEND_SLASH
Einstellung:So, wenn Ihr browser macht eine Anfrage an:
...Django nicht überein es gegen eine der URLs, und erlässt eine Umleitung zu: (weil
APPEND_SLASH
standardmäßig auf True)Diese neue Anforderung erfolgreich sein wird, und Ihr browser ist nun in der Lage, laden Sie die CSS-Datei, aber die CSS-Datei, die resource-URL endet jetzt mit einem Schrägstrich. Wenn Ihr browser verarbeitet die CSS-Regeln und kommt auf:
Versucht er beizutreten, dass die relative URI, um die URI der CSS-Ressource. z.B.:
Schlägt dies fehl, so werden Sie von Ihrem browser erhalten, eine Umleitung zu: (wieder wegen der
APPEND_SLASH
)Aber offensichtlich, dass auch scheitern wird.
Lösungen
Ändern Sie Ihre URL-Muster die folgende: (Hinweis: der entfernt nachgestellte
/
im Muster)Oder verwenden Sie eine der empfohlene Methoden:
...oder: