この場合、FORMオブジェクト(クラス)が渡されています。FORMは、DIV、SPAN、Pなどと同様にgluon.htmlオブジェクトです。これらはすべて、クラスをHTMLの適切な表現に「展開」する「.xml」と呼ばれるメソッドを持っています。
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と呼ばれています。
これがselectクラスです:
http://www.web2py.com/examples/static/epydoc/web2py.gluon.html.SELECT-class.html