Twisted/ Nevow: Probleme mit Pattern Rendering

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
pydiom
User
Beiträge: 2
Registriert: Freitag 22. Juni 2007, 18:33
Wohnort: Süddeutschland

Hallo Python-Forum!

Hat einer von Euch Erfahrung mit dem Templating (insbesondere Erstellen von patterns/ sequences) in Nevow 0.9.18?
Ich habe jetzt hunderterlei Suchanfragen in Google gestellt und auch hier die Foren Suche verwendet, aber leider zum Thema nichts wirklich hilfreiches gefunden.

Ich will eine Webpage mit Twisted 2.5/ Nevow generieren auf der
als Liste Thumbnail Bilder, die als Verweise benutzt werden können, dargestellt werden. Es soll also folgendes rauskommen:

Code: Alles auswählen

<p><a href="bild1gross.jpeg"><img src="bild1klein.jpeg"></img></a></p>
Aber das kriege ich einfach nicht hin :(

Der Ansatz vom dem ich dachte, er müsste funktionieren:

Code: Alles auswählen

<p nevow:render="imageList">
   <a>
      <nevow:attr name="href">
         <nevow:invisible nevow:pattern="imgThumbPath" nevow:render="data"/>
         </nevow:attr>
     <img>
          <nevow:attr name="src">
              <nevow:invisible nevow:pattern="imgThumbPath" nevow:render="data"/>
           </nevow:attr>
       </img>
      </a>
</p>

Code: Alles auswählen

pList = []      
gen_pattern = inevow.IQ(context).patternGenerator('imgThumbPath')
for elem in thumbPaths: #thumPaths ist eine Liste mit den Dateipfaden
     pList.append(gen_pattern(data=elem))
return pList
Was aber von Nevow erzeugt wird ist:

Code: Alles auswählen

<div>
pfad1pfad2pfad3pfad4 [etc]
</div>
und ich verstehe leider absolut nicht wieso :?:

Da gibt es noch diesen ominösen sequence renderer, aber das Beispiel hier http://www.python.net/crew/mwh/nevowapi ... l#sequence
hilft mir auch irgendwie nicht weiter, mir fehlt da wie die Python funktion auszusehen hat.

Wenn jemand hier im Forum da schon Erfahrung gesammelt hat und mir bei der Erstellung der Liste helfen kann, wäre ich froh wenn Er/Sie mir weiterhelfen kann.

Ich hoffe meine erste Frage im Forum ist nicht gleich die dümmste, aber mit der Nevow Doku komme ich bislang wenig klar.

------------------------ Update ------------------------------------

ich habs inzwischen hingekriegt, wie ich glaube.
Ärgerlicherweise kommt gleich das nächste Problem hinterher:
Jetzt werden zwar die Tags richtig eingebunden und geladen, aber die Bilder werden nicht dargestellt. Ich vermute das hängt mit dem static.file zusammen[/i], aber das habe ich eigentlich in der Page Klasse eingebunden. Komisch :?


Viele Grüsse,

pydiom[/i]
Benutzeravatar
Quash
User
Beiträge: 9
Registriert: Donnerstag 5. Juli 2007, 01:53

Hi!
Ich hab mit nevow(?) bisher noch nicht gearbeitet. Sieht auch ziemlich kompliziert aus, das ganze XML-Geraffel.
Ich verstehe dein Problem nicht ganz. Wird denn das richtige HTML generiert? Und trotzdem keine Bilder?
pydiom
User
Beiträge: 2
Registriert: Freitag 22. Juni 2007, 18:33
Wohnort: Süddeutschland

Hi Quash,

mein Problem hat sich inzwischen gelöst :D . Das Problem das ich hatte, ist etwas schwer zu beschreiben, ohne Nevow zu kennen. Deswegen als Kurzinfo:

Kennst Du Twisted?

Mit Twisted kann man einen kleinen (oder auch grossen) Web-Server in Python erstellen.

Nevow ist ein Framework, mit dem man Webseiten über HTML/ XML Templates dynamisch generieren lassen kann.

Wenn man Webseiten schreibt die über Twisted/ Nevow dargestellt werden sollen, organisiert man das ganze üblicherweise (so kenne ich das zumindest bisher) als Python-Klassen, denen jeweils eine (oder mehrere) Seiten (als z.B. HTML Templates) zugeordnet sind.

In einer selbst generierten Klasse kann man zum Laden der HTML-Schablone auf eine Funktion aus dem Nevow-Framework zurückgreifen. (heisst dann z.B. loaders.xmlfile("htmltemplate.html")).
Damit wird das Template geladen und bei Aufruf der Seite angezeigt und über die Templating-Funktionen von Nevow mit dem gewünschten Inhalt gefüllt.

zum (mittlerweile ja gelösten) Problem:

Ja, es wurde korrektes HTML generiert, das konnte ich mit dem Browser überprüfen, aber die Bilder wurden, obwohl physikalisch vorhanden, nie geladen und im Browser immer als not available angezeigt, obwohl der Pfad zu den Bildern korrekt war.

Lösung des Problemes war, dass auch die Bilder (oder zumindest deren Verzeichnis) in die Webseite mittels eines speziellen Befehls geladen werden mussten. erst wenn der Bilderpfad in Nevow geladen wurde, wurden Sie von Twisted/ Nevow auch an den Browser übermittelt.


Ich werde, wenn Interesse besteht, bei Gelegenheit ein Mini-Beispiel ins Forum stellen.

Hier Links zu Twisted und Nevow:
http://twistedmatrix.com/trac/
http://divmod.org/trac

Vielen Dank auf jeden Fall für Dein Interesse :-)

Grüsse,

pydiom
Benutzeravatar
Quash
User
Beiträge: 9
Registriert: Donnerstag 5. Juli 2007, 01:53

Naja, ich denke nicht, dass das notwendig ist. Mit dem ganzen XML-Geraffel kann ich nichts anfangen. ;-)
Antworten