simpleTAL: filtern mit Python...

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hier mal ein dummes Beispiel, welches so leider nicht funktioniert :( Es soll eigentlich die Nr. 67 ausgelassen werden, aber "no" hat wohl keinen Wert zugewiesen bekommen :(

Was läuft da falsch?

Code: Alles auswählen

import sys
import simpleTAL, simpleTALES

template = """
<div tal:repeat="data example" tal:omit-tag="">
<span tal:define="no repeat/data/no" tal:condition="python:no != 67">
    <p tal:content="python:str(no)"></p>
    <p tal:content="string:${data/no} - ${data/char}"></p>
</span>
</div>
"""
data = [{"char":chr(i),"no":i} for i in range(65, 70)]

context = simpleTALES.Context(allowPythonPath=1)
context.addGlobal("example", data)

template = simpleTAL.compileHTMLTemplate(template)
template.expand(context, sys.stdout)
Ausgaben:
<span>
<p>None</p>
<p>65 - A</p>
</span>

<span>
<p>None</p>
<p>66 - B</p>
</span>

<span>
<p>None</p>
<p>67 - C</p>
</span>

<span>
<p>None</p>
<p>68 - D</p>
</span>

<span>
<p>None</p>
<p>69 - E</p>
</span>

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

jens hat geschrieben:Hier mal ein dummes Beispiel, welches so leider nicht funktioniert :( Es soll eigentlich die Nr. 67 ausgelassen werden, aber "no" hat wohl keinen Wert zugewiesen bekommen :(
Was läuft da falsch?
Hi Jens!

Das ist wirklich leicht zu übersehen. Die Zeile müsste so aussehen.

Code: Alles auswählen

<span tal:define="no data/no" tal:condition="python:no != 67">
repeat/liste/foo brauchst du nur um den Index, Even, Odd oder andere Informationen über eine Datenzeile heraus zu bekommen.

Die Zeile könnte aber auch so aussehen:

Code: Alles auswählen

<span tal:condition="python:data['no'] != 67">
lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Super, beide Varianten funktionieren:

Code: Alles auswählen

import sys
import simpleTAL, simpleTALES

template = """
<div tal:repeat="data example" tal:omit-tag="">
<span tal:define="no data/no" tal:condition="python:no != 67">
    <p tal:content="python:str(no)"></p>
    <p tal:content="string:${data/no} - ${data/char}"></p>
</span>
</div>
"""
data = [{"char":chr(i),"no":i} for i in range(65, 70)]

context = simpleTALES.Context(allowPythonPath=1)
context.addGlobal("example", data)

template = simpleTAL.compileHTMLTemplate(template)
template.expand(context, sys.stdout)

print " -"*40

template = """
<div tal:repeat="data example" tal:omit-tag="">
<span tal:condition="python:data['no'] != 67">
    <p tal:content="string:${data/no} - ${data/char}"></p>
</span>
</div>
"""
data = [{"char":chr(i),"no":i} for i in range(65, 70)]

context = simpleTALES.Context(allowPythonPath=1)
context.addGlobal("example", data)

template = simpleTAL.compileHTMLTemplate(template)
template.expand(context, sys.stdout)
Übrigends hab ich mir einfach schnell mal eine eigene logging.py geschrieben, damit ich Fehler richtig sehen kann:

Code: Alles auswählen

class DummyLogger:
    def debug (self, *args): pass
    def info (self, *args): pass

    def warn (self, *args):
        print args

    def error (self, *args):
        print args

    def critical (self, *args):
        print args

def getLogger (*params):
    return DummyLogger()

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

jens hat geschrieben:Super, beide Varianten funktionieren:
[...]
Übrigends hab ich mir einfach schnell mal eine eigene logging.py geschrieben, damit ich Fehler richtig sehen kann
Hi Jens!
So einen Logger braucht man unbedingt. Sonst ist man bei der Fehlersuche eine arme Sau.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten