在这种情况下,正在传递 FORM 对象(类)。FORM 是一个 gluon.html 对象,DIV、SPAN、P 等也是。它们都有一个名为“.xml”的方法,该方法将类“展开”为适当的 HTML 表示。
在 web2py 中,您可以在控制器末尾的 dict() 中传递任何对象,并在模板中使用它。因为 web2py 在模板中使用纯 python,所以您不必以任何方式确保您的对象是“支持”的,任何对象或原语都可以发送。但是,HTML 对象应该继承自所有 HTML 对象的基类,并且应该有一个代表该对象的 .xml() 方法。
dom tree
假设您的意思是 HTML 片段(代码中的分层结构),您可以按照您的说法传递 a 。例如:
some_text = 'even variables'
x = DIV(
A(IMG(_src='some-img.png'), _href='http://some.link.com/awdawd'),
SPAN('Some text for whatever reason', _class='my-class', _some_other_html_attribute='i automatically get made into an attribute in the html, via gluonic magic'),
DIV('I am text, because I am a div, any number of arguments can be combined', 'and displayed', some_text, **{'_data-special-attr':'even-html5-microdata-is-doable'}),
UL(LI('lists are cool too'), LI('I guess')),
TABLE([['some objects', 'are smart'], ['and you can pass them lists of lists'], ['and they know what to do with it']])
)
return dict(content=x)
完全有效并且会正确“展开”[假设我输入正确......]
更多信息,请访问 epydocs:http ://www.web2py.com/examples/static/epydoc/web2py.gluon.html.XmlComponent-class.html
我提到了“基础 HTML 类”——它实际上称为 XMLComponent。
这是选择类:
http://www.web2py.com/examples/static/epydoc/web2py.gluon.html.SELECT-class.html