jinja - attr einer hashablen variable beantragen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

jinja - attr einer hashablen variable beantragen

Beitragvon Costi » Mittwoch 5. September 2007, 20:54

mein traceback sieht folgendermassen aus:

Code: Alles auswählen

Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/cherrypy/_cprequest.py", line 551, in respond
    cherrypy.response.body = self.handler()
  File "/usr/lib/python2.5/site-packages/cherrypy/_cpdispatch.py", line 24, in __call__
    return self.callable(*self.args, **self.kwargs)
  File "/home/kirsch/Desktop/domino/main.py", line 131, in login
    return render_last_tmpl(login_failed=True)
  File "/home/kirsch/Desktop/domino/main.py", line 46, in render_last_tmpl
    return render(tmpl_name, **name_space)
  File "/home/kirsch/Desktop/domino/main.py", line 37, in render
    return tmpl.render(kwargs)
  File "/usr/lib/python2.5/site-packages/Jinja-1.1-py2.5-linux-i686.egg/jinja/translators/python.py", line 110, in render
    self._debug(ctx, *sys.exc_info())
  File "/usr/lib/python2.5/site-packages/Jinja-1.1-py2.5-linux-i686.egg/jinja/utils.py", line 368, in fake_template_exception
    exec code in globals, namespace
  File "jinja://base.html", line 37, in <module>
    {{ else }}
OperationalError: no such column: islogedin


und zwar ist hier wohl die variable ``user`` hashable, in diesen fall will ich aber auf dem attribut "islogedin" zugreifen....

....sofern ich davon ausgehe, dass hier nicht "{{ else }}" in zeile 37, sondern
eigentlich zeile 34, "{{if user.islogedin()}} " gemeint ist!
cp != mv
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Donnerstag 6. September 2007, 17:32

Der Debugger ist in der SVN Version verbessert und kann auf sowas reagieren. Du kannst mal dem Enviornment mit "enable_friendly_tracebacks=False" den debug rewriter ausschalten und mal sehen wo der Fehler im Original auftaucht.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Beitragvon birkenfeld » Donnerstag 6. September 2007, 19:13

BTW, ist `{{ else }}` kein Syntaxfehler?
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Beitragvon Costi » Donnerstag 6. September 2007, 19:27

nein, mann kan ja in jinja sich den syntax im ``Enviroment`` definieren :wink:

EDIT:
aber mein problem ist eher, dass ich den attribut "islogedin" und nicht den key will
cp != mv
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Donnerstag 6. September 2007, 19:44

Costi hat geschrieben:EDIT:
aber mein problem ist eher, dass ich den attribut "islogedin" und nicht den key will


Tja. Deine Klasse wirft einen OperationalError. Jinja verlangt, dass __getitem__ einen KeyError oder keinen wirft und __getattr(ibute)__ einen AttributeError.
TUFKAB – the user formerly known as blackbird
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Beitragvon Costi » Donnerstag 6. September 2007, 19:57

hmmm, thx
ich mach dan einfach eine ``ResultThrowingKeyErrors`` classe
is zwar nicht besonders schoen aber egal
cp != mv
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Beitragvon Costi » Freitag 7. September 2007, 07:27

oder noch besser:

ich mach einfach aus meinem TurboXML[1] eine mini templating engine :lol:



[1] http://www.python-forum.de/topic-11875.html
cp != mv
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 7. September 2007, 11:26

Costi hat geschrieben:ich mach einfach aus meinem TurboXML[1] eine mini templating engine :lol:

Sowas ähnliches gibt es schon, nennt sich Breve und lehnt sich an Nevow Stan an.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder