Das funktioniert eigentlich auch. Das Problem ist allerdings das die Daten aus der Liste, einmal gesetzt in der Liste bleiben! Ich dachte eigentlich meine Liste ist für jeden Request leer, dem ist aber nicht so...
Irgendwie weiß ich nicht, wo ich die Liste, wie löschen kann...
Hier mal der relevante Code:
Code: Alles auswählen
add_code_tag = "<PyLucidInternal:addCode/>"
class Replacer(object):
def __init__(self, app):
self.app = app
def addCode(self, line, environ):
code = environ['PyLucid.addCode']
if code==[]:
# Gibt keinen Add-Code
return ""
code = "\n".join(code)
line = line.replace(add_code_tag, code)
return line
def __call__(self, environ, start_response):
result = iter(self.app(environ, start_response))
for line in result:
if add_code_tag in line:
line = self.addCode(line, environ)
yield line
if hasattr(result, 'close'):
result.close()
class AddCode(list):
def __init__(self, app):
list.__init__(self)
self.tag = add_code_tag
self.app = app
def __call__(self, environ, start_response):
#~ self.__list__ = []
environ['PyLucid.addCode'] = self
return self.app(environ, start_response)