web2py - comment injecter html
Question
i utilisé rows.xml () pour générer une sortie html. Je veux savoir comment ajouter des codes html à cette page html générée par exemple: "ajouter le logo, le fichier css lien, etc .."
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()
La solution
Il y a beaucoup d'aides HTML que vous pouvez utiliser, par exemple:
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)))
et ainsi de suite.
Vous pouvez même créer automatiquement une table entière:
table = SQLTABLE(rows, orderby=True, _width="100%")
et puis le prendre à part pour insérer des liens ou modifier ses éléments.
Il est très puissant et, normalement, vous ne devez pas la peine d'écrire le code HTML réel vous-même. Voici antisèche, ou vous pouvez vérifier directement sur la page documentation du site .
Edit: Juste pour vous assurer, vous n'avez pas réellement besoin pour générer toute la page HTML, il est plus facile de laisser web2py insérer votre réponse dans un modèle qui a le même nom que votre contrôleur (ou force un modèle particulier response.view = 'template.html'
. Le didacticiel de documentation expliquera que mieux et plus en détail.
En quelques mots, si vous implémentez la fonction index
, vous pouvez soit retourner une chaîne (toute page HTML, ce qui semble être ce que vous dirigez pour), ou un dictionnaire à utiliser des modèles.
Dans le premier cas, le code que votre fonction comme ceci:
def index():
# ... code to extract the rows
return HTML(BODY(B('Results:', rows.xml(), _class='results', _id=1))).xml()
Dans le cas contraire, écrire un modèle html dans les vues / contrôleur /index.html (ou un autre fichier si vous insérez le response.view=...
dans votre fonction, de réutiliser le même modèle), ce qui pourrait ressembler ceci:
<html><head></head>
<body>
{{=message}}
</body>
</html>
et retourner un dictionnaire:
def index():
# ... code to extract the rows
html = B('Results:', rows.xml(), _class='results', _id=1)
return dict(message=html)
Autres conseils
Juste précédez / ajouter à la chaîne rows.xml()
retours:
html = '<html><head>...</head><body>' + rows.xml() + '</body></html>'