latest news

2008-11-09 19:33:42

Umstellung und Migration

2 Comments

unanswered questions

2008-10-30 13:34:21

Syndication Feed-Problem

0 Replies

2008-11-17 16:49:19

dynamische urlpatterns...

2 Replies

2008-12-22 02:46:20

Fragen zu pagination ~~

1 Replies

Board » Django das Framework » Probleme & Fragen » Probleme mit CSS Datei

Hallo zusammen,

ich habe Probleme beim Einbinden von CSS Dateien. Im Ersten Moment koennte man denken, dass das nicht viel mit Django zu tun hat, aber ich glaube das es an Django liegt. Denn wenn ich die Ausgabe des Servers (Testserver unter Windows) richtig deute, laedt er die layout.css aus dem richtigen Verzeichniss ("GET /site_media/css/layout.css HTTP/1.1" 404 2063"). Aber es hat einfach keine Auswirkung. Die Seite ist genau wie vorher :). Und ohne Django funktioniert es ja auch.
Achso und meine JavaScript Dateien bindet es auch nicht ein.

Wodran kann das liegen ? Vielleicht an der settings.py ?

Kurz meine Einstellung: Windows XP, Django revision 7397, XHTML.
Ich binde die externe CSS Datei mit folgender Zeile ein:
<link rel="stylesheet" href="/site_media/css/layout.css" type="text/css" media="screen, projection" />


Auszug aus meiner settings.py:

BASEDIR = os.path.dirname(os.path.abspath(__file__)).replace(&#039;\\&#039;,&#039;/&#039;)
MEDIA_ROOT = os.path.join(BASEDIR, &#039;site_media&#039;)
MEDIA_URL = &#039;/media/&#039;
ADMIN_MEDIA_PREFIX = &#039;/admin_media/&#039;
WEB_ROOT = os.path.join(BASEDIR, &#039;static_cache/htdocs/&#039;)


Waere super wenn mir jemand helfen koennte :)
Hast du mal "/css/layout.css" statt "/site_media/css/layout.css" in deinem Template probiert?

Wenn du in deiner Browser Adressleiste die URL zur CSS Datei angibst, öffnet sich die CSS Datei dann?
Also nur "/css/layout.css" oder "/media/css/layout.css" bringt auch nichts. Hab auch ein paar Variationen davon versucht.
Und im Browser findet er die CSS Datei nicht wenn ich die URL dazu angebe !

Vielleicht sollte ich meine Verzeichnissstruktur auch mal angeben:
/project/site_media/css/
/project/templates/

Und ich hab jetzt mal den Sourcecode von einem Beispiel auf der Seite http://www.djangosites.org/ angeschaut. Selbst wenn ich das eins zu eins uebernehm, funktioniert es nicht :(. Langsam glaub ich das es an meinem Laptop liegt ... :D
Hey ,sorry das ich mich erst so spät melde. Momentan lerne ich für Klausuren.

Hast du in der urls.py eventuell Verzeichnisse hinterlegt? Bin mir monetan nicht ganz
sicher ob das auch für den dev. Server gilt....

Beispiel:

#css and image folders
(r&#039;^images/(?P<path>.*)&#039;, &#039;django.views.static.serve&#039;, {&#039;document_root&#039;: MEDIA_ROOT+&#039;/images&#039;, &#039;show_indexes&#039;: False}),
(r&#039;^css/(?P<path>.*)&#039;, &#039;django.views.static.serve&#039;, {&#039;document_root&#039;: MEDIA_ROOT+&#039;/css&#039;, &#039;show_indexes&#039;: False}),
(r&#039;^uploads/(?P<path>.*)&#039;, &#039;django.views.static.serve&#039;, {&#039;document_root&#039;: MEDIA_ROOT+&#039;/uploads&#039;, &#039;show_indexes&#039;: False}),
Danke aber es funktioniert immernoch nicht. Ich glaube, dass ich irgendwo noch eine Kleinigkeit uebersehen habe.

Was muss ich denn alles beachten bei der Einbindung ? Sind die Verzeichnisse richtig ? Ist in der settings.py die MEDIA oder MEDIA_ROOT vielleicht falsch ? Binde ich die CSS Datei mit dem richtigen Verzeichnis ein ?
Ah endlich funktionierts! Habe jetzt folgende Einstellung (nur falls auch mal jemand dieselben Probleme hat)

Die CSS Datei liegt in:
/PROJECT/site_media/css/

Die Templates in:
/PROJECT/templates/

settings.py:
BASEDIR = os.path.abspath(os.path.dirname(__file__))
DEBUG = True

MEDIA_ROOT = BASEDIR + &#039;/site_media/&#039;
MEDIA_URL = &#039;/media/&#039;
ADMIN_MEDIA_PREFIX = &#039;/admin_media/&#039;


urls.py:
from django.conf import settings

if settings.DEBUG:
    urlpatterns += patterns(&#039;&#039;,
        (r&#039;^media/(?P<path>.*)$&#039;, &#039;django.views.static.serve&#039;, {&#039;document_root&#039;: settings.MEDIA_ROOT}),
    )


base.html:
<link rel="stylesheet" href="{{ MEDIA_URL }}css/base.css" type="text/css" media="screen, projection" />
Spitze, dass du es selbst geschafft hast! ;D

Bald habe ich auch wieder mehr Zeit für Django !!!