質問
rows.xml() を使用して HTML 出力を生成しました。この生成された HTML ページに HTML コードを追加する方法を知りたいです。例:「ロゴの追加、CSS ファイルのリンク、..等"
rows=db(db.member.membership_id==request.args[0]).select(db.member.membership_id
,db.member.first_name,db.member.middle_name
,db.member.last_name)
return rows.xml()
解決
使用できる HTML ヘルパーは数多くあります。次に例を示します。
html_code = A('<click>', rows.xml(), _href='http://mylink')
html_code = B('Results:', rows.xml(), _class='results', _id=1)
html_page = HTML(BODY(B('Results:', rows.xml(), _class='results', _id=1)))
等々。
テーブル全体を自動的に作成することもできます。
table = SQLTABLE(rows, orderby=True, _width="100%")
次に、それを分解してリンクを挿入したり、その要素を変更したりできます。
これは非常に強力なので、通常は実際の HTML を自分で記述する必要はありません。 ここにチートシートがあります, 、または、で直接確認することもできます。 ウェブサイトのドキュメント.
編集:念のため言っておきますが、実際に HTML ページ全体を生成する必要はありません。コントローラーと同じ名前のテンプレートに web2py に応答を挿入させる方が簡単です (または、次のコマンドを使用して特定のテンプレートを強制します) response.view = 'template.html'
. 。ドキュメントのチュートリアルでは、これについてさらに詳しく説明します。
関数を実装している場合、一言で言えば、 index
, 、文字列 (目的のページの HTML 全体)、またはテンプレートを使用するための辞書を返すことができます。
最初のケースでは、次のように関数をコード化するだけです。
def index():
# ... code to extract the rows
return HTML(BODY(B('Results:', rows.xml(), _class='results', _id=1))).xml()
それ以外の場合は、views/ に HTML テンプレートを記述します。コントローラ/index.html (または、 response.view=...
関数内で同じテンプレートを再利用します)。これは次のようになります。
<html><head></head>
<body>
{{=message}}
</body>
</html>
そして辞書を返します:
def index():
# ... code to extract the rows
html = B('Results:', rows.xml(), _class='results', _id=1)
return dict(message=html)
他のヒント
ただ、前付加/リターンをrows.xml()
文字列に追加します:
html = '<html><head>...</head><body>' + rows.xml() + '</body></html>'