/
example23.py
92 lines (71 loc) · 2.61 KB
/
example23.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import os
from twisted.application import internet
from twisted.web.resource import Resource
from twisted.web import server
from twisted.internet import reactor
from twisted.web.template import Element, renderer, XMLFile, tags, renderElement
from twisted.python.filepath import FilePath
from twisted.python.util import sibpath
from twisted.web.static import File
class ElementResource(Resource):
def __init__(self, element):
Resource.__init__(self)
self.element = element
def render_GET(self, request):
return renderElement(request, self.element)
class ExampleElement(Element):
loader = XMLFile(FilePath('threadbare.html'))
@renderer
def header(self, request, tag):
return tag(tags.p('Templated content.'), id='content')
@renderer
def footer(self, request, tag):
return tag(tags.p('[1, 2, 3, 4, 5, 6].'), id='extra_info')
class MyElement(Element):
loader = XMLFile(FilePath('template2.xml'))
@renderer
def header(self, request, tag):
return tag(tags.p('This is very different'), id='more_info')
@renderer
def body(self, request, tag):
return tag(tags.p('So very different'), id='content')
class ThreadResource(Resource):
def getChild(self, name, request):
if name == 'template2':
return ElementResource(ExampleElement())
if name == 'template3':
return ElementResource(MyElement())
return self
def render_GET(self, request):
return 'loader'
root = ThreadResource()
site = server.Site(root)
reactor.listenTCP(8000, site)
reactor.run()
"""from twisted.application import internet
from twisted.web.resource import Resource
from twisted.web import server
from twisted.web.template import Element, renderer, XMLFile, tags, renderElement
from twisted.python.filepath import FilePath
#from twisted.internet import reactor
class ElementResource(Resource):
def __init__(self, element):
Resource.__init__(self)
self.element = element
def render_GET(self, request):
return renderElement(request, self.element)
class ExampleElement(Element):
loader = XMLFile(FilePath('template.xml'))
@renderer
def header(self, request, tag):
return tag(tags.p('Templated content.'), id='content')
@renderer
def extra_info(self, request, tag):
return tag(tags.p('[1, 2, 3, 4, 5, 6].'), id='extra_info')
class ThreadResource(Resource):
def getChild(self, name, request):
if name == 'foo':
return ElementResource(ExampleElement())
return self
def render_GET(self, request):
return 'Nope'"""