Django-Seite wird nicht ordentlich dargestellt

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Dienstag 17. Juni 2008, 18:02

Hallo,

ich arbeite gerade mit dem Django-Framework. Ich habe nun eine HTML Seite erstellt.

Diese wollte ich nun mit über die Funktion render_to_response aus dem Paket django.shortcuts zurückgeben lassen. Die Seite wird auch aufgerufen allerdings ohne die ganzen Grafiken und CSS Einstellungen. Ich habe also nur den Text dort stehen.

Wenn ich die Html Datei direkt aufmache stellt er die Seite richtig dar. Hat jemand eine Idee was ich falsch mache bzw. beachten muss? Liegt es eventuell an den Pfadangaben in der HTML Datei?

Mfg
Martin
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 17. Juni 2008, 18:03

Sind denn die Grafiken und CSS-Dateien verfügbar? Was passiert, wenn du die URLs der Grafiken manuell aufrufst?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Dienstag 17. Juni 2008, 18:19

Hallo Leonidas,

ja die Dateien sind verfügbar. Wenn ich die URL der Grafik aufrufe klappt es auch.
Zur Info: ich arbeite zurzeit lokal mit dem Entwicklungsserver von Django.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 17. Juni 2008, 18:29

martin101986 hat geschrieben:ja die Dateien sind verfügbar. Wenn ich die URL der Grafik aufrufe klappt es auch.
Könntest du etwa die von Django ausgegebene HTML-Seite pasten, etwa ins Lodgeit?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Dienstag 17. Juni 2008, 18:55

Hab jetzt die von Django ausgegebene Seite gespeichert. FIndest du unter:
http://paste.pocoo.org/show/72121/

Ich habe auch schon den Fehler gesehen. Er ersetzt mir die Pfadangaben bei den BIldern und zur CSS Datei.

Wieso macht er das?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 17. Juni 2008, 19:21

martin101986 hat geschrieben:Ich habe auch schon den Fehler gesehen. Er ersetzt mir die Pfadangaben bei den BIldern und zur CSS Datei.

Wieso macht er das?
Sowas macht Django nicht. Poste am besten auch mal dein Template.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Dienstag 17. Juni 2008, 19:26

Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 17. Juni 2008, 22:13

Das ist echt seltsam. Bessere mal dein Template aus (Pygments zeigt dir sogar die Fehler an) und zeig mal den View, der das Template rendert. Welche Middlewares nutzt du?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Mittwoch 18. Juni 2008, 16:16

Hallo,

anbei der Code aus der views.py:

Code: Alles auswählen

from django.shortcuts import render_to_response
from django.template import Context
from django.http import HttpResponse

def site(request):
	f=open('/home/martin/Development/Python/mysite/templates/h.txt','rb')
	return HttpResponse(f.read())
	#return render_to_response('vorlage.html', {})
[/code]

Ich habe es mit HttpResponse und mit render_to_response probiert. Bei beiden Arten der gleich Fehler.

Anbei die Middlewares:

Code: Alles auswählen

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.doc.XViewMiddleware',
)
Das mit Pygments werde ich noch ausprobieren.

Grüße
Martin
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 19. Juni 2008, 09:18

Lokaler dev. Server? Dann müssen auch statische Dateien ausgeliefert werden.
CSS Dateien am besten mit absoluter URL einbiden...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Donnerstag 19. Juni 2008, 16:45

Hallo Jens,

hat leider nicht geklappt mit den absoluten Pfaden.

Ich habe mal im Django IRC nachgefragt und da hat mir jemand gesagt dass ich diese Zeile in meine urls.py einfügen soll:

Code: Alles auswählen

(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/media'}),
Das mit dem document_root ist klar, das ist der Pfad wo sich die bilder, css dateien etc. befinden. Kann mir jetzt noch jemand sagen was ich bei der url angeben soll?

Ich werde aus der Beschreibung in der Doku nicht so ganz schlau.
http://www.djangoproject.com/documentat ... tic_files/

Kann mir da von euch jemand weiterhelfen?

Weil wir gerade dabei sind, entwickelt Ihr gleich im Internet auf einen richtigen Webserver oder auch zuerst lokal mit dem Entwicklungsserver?

Grüße Martin
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 19. Juni 2008, 16:48

martin101986 hat geschrieben:

Code: Alles auswählen

(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/media'}),
Pack eine Datei nach /path/to/media/Beispiel.css und adressiere sie im html code mit /site_media/Beispiel.css

Jetzt klar?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Donnerstag 19. Juni 2008, 17:03

Ja alles klar, habs gerade ausprobiert und funktioniert!

Danke für eure Hilfe
Antworten