[Django] Frage zu relativen Pfadangaben

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Hallo,

ich bin gerade dabei mir Django anzusehen und anzueignen. Jedoch bin bei den Templates auf mir nicht wirklich erklärbare Fehler gekommen:
Der erste liegt bei den {& extends &} Blöcken. Wenn ich 2 HTML Dokumente in demselben Verzeichniss hab(z.B. basic.html und content.html) und in content.html {% extends basic.html %} schreibe, dann bekomme ich einen TemplateSyntaxError:

Code: Alles auswählen

Template 'basic.html' cannot be extended, because it doesn't exist
Ich muss immer den absoluten Pfad angeben /home/user/.htdocs/django/templates/basic.html. Was mich daran verwundert: In der Doku wird auch der Pfad relativ angegeben. http://www.djangoproject.com/documentation/templates/
Und das zweite ist, dass ich CSS Dokumente weder Relativ noch absolut angeben kann, ich also gezwungen bin, sie in die HTML Dateien einzubinden, was ich nur ungern tun würde...
Entweder hab ich Konfigurationsmäßig was vergessen, oder ich hab einen anderen wichtigen Punkt übersehen. Helft mir bitte auf die Sprünge :wink:
LG
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

1.) Settings.py her, und die Ordner in denen deine Templates liegen inklusive Struktur, bei mir geht es wunderbarst!

2.) Css Datein sind "Media"-Datein, dafür gibt es in settings.py nen Media-root etc um die statischen Dateien von einem dafür geigneteren Server auszuliefern (Apache, Lighty..)

Lg
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Achso, wenn das Media dateien sind, erklärt das ja einiges ;) Den Media root hab ich nicht definiert. Sollte ichs trotz des hinweises nich packen, dann meld ich mich nochma. Danke :)
LG
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Habs grade eben ausprobiert und bekomm nichs hin (dumm, blind:?:)
Settings.py
Struktur

Code: Alles auswählen

tobsl@blechbuechse:~$ ls -R /var/www/htdocs/ && ls -R /home/tobsl/.htdocs/django

/var/www/htdocs/:
media  templates

/var/www/htdocs/media:
news  news.css

/var/www/htdocs/media/news:
news.css

/var/www/htdocs/templates:
base_template.html  list_news.html  news.css
/home/tobsl/.htdocs/django/:
mysite

/home/tobsl/.htdocs/django/mysite:
database     __init__.pyc  mysite.urls  news   settings.py   urls.py
__init__.py  manage.py     myurls.py    polls  settings.pyc  urls.pyc

/home/tobsl/.htdocs/django/mysite/database:
db1

/home/tobsl/.htdocs/django/mysite/news:
__init__.py  __init__.pyc  models.py  models.pyc  views.py  views.pyc

/home/tobsl/.htdocs/django/mysite/polls:
__init__.py  __init__.pyc  models.py  models.pyc  views.py
Hier noch die Ausgabe des Servers:

Code: Alles auswählen

[15/Apr/2007 11:28:43] "GET /news/ HTTP/1.1" 200 1039
[15/Apr/2007 11:28:43] "GET /news/news.css HTTP/1.1" 404 2143
Wieso fordert der eigentlich news/news.css an? Ich mein, so hab ich das ja nicht angegeben.. Will der gleich ein Unterverzeichniss im Mediaroot mit dem Namen der App haben? Ich hab einfach mal eines erstellt und da die css Datei reinkopiert, hilft aber nix(ihr seht die Struktur ja oben).
Was ich auch noch gern wüsste, da ich bei den Links in den Kommentaren der Settings.py komischerweise nich fündig geworden bin: Was is der Langcode für Deutschland und welche Zeitzone (also für pgsql) soll ich einstellen(Auch für Deutschland)?
LG
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

http://www.postgresql.org/docs/8.1/stat ... -SET-TABLE

Templates werden nicht über den Apache serviert! Templates für Applikationen kommen in den Ordner projekt/apllikation/templates/apllikation_name/template-html und werden somit automatisch von django gefunden...
base.html (etc.) Templates werden für gewöhnlich hier abgelegt projekt/templates/base.html
und Template_dirs dorthin gesetzt:

Code: Alles auswählen

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    '/home/florian/python/homepage/templates/',
)
Deine Mediadateien sollten passen, diese Einstellungen sind in settings.py nötig:

Code: Alles auswählen

MEDIA_ROOT = '/var/www/media/'
MEDIA_URL = 'http://localhost/media/'
ADMIN_MEDIA_PREFIX = '/media/admin/'
Und dann die Admin-Media Dateien nach /var/www/media/admin symlinken

Wegen den Requests weiß ich jetzt selbst nicht (Html-snippet?!...)

EDIT:// django muss nicht in .htdocs liegen, vor allem nicht bei der Entwicklung dort würde ich einfach den devel-Server verwenden und es in $HOME/python oder so hinterlegen...

EDIT2:// Du verwendest wohl die svn-Version?
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Nein, ich hab mir die tar.gz Version gesaugt und nich die SVN:

Code: Alles auswählen

python manage.py --version
0.95.1
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Nimm svn die 0.95 ist alt, geht der Rest jetzt?
Btw: Svn ist stable, also kein Grund es nicht zu verwenden (Vor allem mit den neuen vielen Features!)
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

apollo13 hat geschrieben:Und dann die Admin-Media Dateien nach /var/www/media/admin symlinken
Andersherum oder? Ansonsten ist ja in /var/www/media/admin nix drinnen?!
Settings.py

Code: Alles auswählen

MEDIA_ROOT = '/var/www/media/'
MEDIA_URL = 'http://localhost:8000/media/'
ADMIN_MEDIA_PREFIX = '/media/admin/'
Das steht jetzt so drinnen; es geht trotzdem nicht :cry:
Meine deinen Vorschlägen(hoffentlich richtig) angepasste Verzeichnissstruktur:
tobsl@blechbuechse:~$ ls -R /var/www/ && ls -R /home/tobsl/.django/
/var/www/:

/var/www:
htdocs media

/var/www/htdocs:

/var/www/media:
admin news news.css

/var/www/media/admin:

/var/www/media/news:
news.css
/home/tobsl/.django/:
mysite

/home/tobsl/.django/mysite:
base_templates __init__.py manage.py news settings.py urls.py
database __init__.pyc myurls.py polls settings.pyc urls.pyc

/home/tobsl/.django/mysite/base_templates:
base_news.html

/home/tobsl/.django/mysite/database:
db1

/home/tobsl/.django/mysite/news:
__init__.py models.py templates views.pyc
__init__.pyc models.pyc views.py

/home/tobsl/.django/mysite/news/templates:
list_news.html

/home/tobsl/.django/mysite/polls:
__init__.py __init__.pyc models.py models.pyc views.py
Eigentlich sind doch die Einstellungen richtig, wieso geht es trotzdem nicht?
LG
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

/home/tobsl/.django/mysite/news/templates
sollte
/home/tobsl/.django/mysite/news/templates/news sein...
Die Admindatein (django/contrib/admin/media) noch nach /var/www/media/admin linken

Beim Rest kA, vlt nimmst echt den svn-checkout...

base_templates in den settings.py eingetragen?
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Die Templates werden perfekt geladen. Alles wunderbärchen, hat aber schon die ganze Zeit gefunzt.. Nur die CSS Dateien werden komischerweise nicht geladen.
Mit der SVN Version werde ich es morgen probieren.
Die Admin Media Dateien werden geladen, obwohl ich nix verlinkt hab, is das richtig so? Wenn ja: wieso muss ich sie dann verlinken? Wenn nein: :shock: .
Die generelle Struktur sieht doch so aus:
Projekt/Basistemplates
Projekt/App1/Templates
Projekt/App2/Templates
Wenn ja, dann hab ichs ja richtig (Mein Projekt hab ich den ganz sinnvollen Namen "mysite" gegeben - is ja nur zum Testen und Reinfinden)

LG
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

apollo13 hat geschrieben:Nimm svn die 0.95 ist alt, geht der Rest jetzt?
Inzwischen wird 0.96 statt SVN empfohlen (habe ich zumindest in django-developers zu lesen geglaubt). Selbst nutze ich aber auch seit jeher die SVN-Version.

Schau halt in Browser, ob wenn du die URL zu den CSS-Dateien angibst, ob dort auch wirklich die CSS-Dateien zu finden sind.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Leonidas hat geschrieben:
apollo13 hat geschrieben:Nimm svn die 0.95 ist alt, geht der Rest jetzt?
Inzwischen wird 0.96 statt SVN empfohlen (habe ich zumindest in django-developers zu lesen geglaubt). Selbst nutze ich aber auch seit jeher die SVN-Version.
Aber nur für den Moment. Grund sind größere Umbauten am Kern. newforms ersetzt gerade oldforms, class Admin: geht raus und Unicodeunterstützung kommt in den Kern.
TUFKAB – the user formerly known as blackbird
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

blackbird hat geschrieben:newforms ersetzt gerade oldforms
Ich wünsche mir vorerst mal etwas mehr Dokumentation zu den newforms, denn bisher muss man meist den Quellcode lesen, der zwar nicht übel ist aber - sowas ist man von Django nicht gewöhnt oder im IRC rumfragen. Ansonsten sind Newforms cool, habe mein wichtigstes Projekt vollständig auf Newforms portiert.
blackbird hat geschrieben:class Admin: geht raus
Wobei mich interessieren würde, wann der Newform-Admin-Branch nun gemerged wird. Er ist ja noch nicht ganz fertig, aber das scheint nach Magic-Removal mein Lieblingsbranch zu werden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Leonidas hat geschrieben:
blackbird hat geschrieben:newforms ersetzt gerade oldforms
Ich wünsche mir vorerst mal etwas mehr Dokumentation zu den newforms, denn bisher muss man meist den Quellcode lesen, der zwar nicht übel ist aber - sowas ist man von Django nicht gewöhnt oder im IRC rumfragen. Ansonsten sind Newforms cool, habe mein wichtigstes Projekt vollständig auf Newforms portiert.
Die Doku wird mit 1.0 up2date sein
Leonidas hat geschrieben:
blackbird hat geschrieben:class Admin: geht raus
Wobei mich interessieren würde, wann der Newform-Admin-Branch nun gemerged wird. Er ist ja noch nicht ganz fertig, aber das scheint nach Magic-Removal mein Lieblingsbranch zu werden.
Mit pre 1.0 ;) Nein ehrlich: Jacob will kein Datum sagen...
Hmm ich kam erst nach magic-removal dazu, muss aber sagen das der nötig war und mir gefällt, dass sie das durchgezogen haben!
Ab 1.0 wird sich an der Api dann ja nimmer viel ändern, weil sie stable sein soll (zumindest bis 1.2)

@topic: stimmt, wenn man django noch nicht so viel verwendet, bzw news liest sollte man mit 0.96 halt machen, unkontrollierte svn-updates würde ich jetzt wirklich nimmer empfehlen, dann ist plötzlich der neue Admin da und nix geht mehr.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

apollo13 hat geschrieben:@topic: stimmt, wenn man django noch nicht so viel verwendet, bzw news liest sollte man mit 0.96 halt machen, unkontrollierte svn-updates würde ich jetzt wirklich nimmer empfehlen, dann ist plötzlich der neue Admin da und nix geht mehr.
Naja, ich wollte damit schon später mal produktiv arbeiten. Bis jetz muss ich mich ja noch einarbeiten, weswegen das hier nur Spielwiese ist, auf der ich lerne und Erfahrungen sammle.
Wie is das mit dem neuen Admin, was wird sich da ändern? Sollte ich jetzt einfach mal ne Pause machen und abwarten?
LG
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Das sind die Änderungen die kommen werden:
http://groups.google.com/group/django-d ... b656973c4/

Für ein Produktivsystem würde ich dann einen svn checkout machen und nur wenn ein bug auftritt updaten, was im trunk ja gern vorkommen kann (auch wenn er sehr stabil ist...)

An deiner Stelle würde ich jetzt auch so vorgehen, wie für ein Produktivsystem beschrieben ist, außer du willst, dass plötzlich der neue admin da ist.

lg
Antworten