2009-10-11 6 views
2

J'ai utilisé rows.xml() pour générer une sortie html. Je veux savoir comment ajouter des codes html à ce produit page html par exemple: "ajouter le logo, le fichier css lien, .. etc"web2py - comment injecter html

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()

Répondre

2

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 une table entière automatiquement:

table = SQLTABLE(rows, orderby=True, _width="100%") 

puis ramasser à part pour insérer des liens ou modifier ses éléments.

Il est très puissant et normalement vous n'avez pas à vous soucier d'écrire vous-même le code HTML. Here is the cheatsheet, ou vous pouvez vérifier directement sur le website documentation.


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 la force un modèle particulier avec response.view = 'template.html' Le tutoriel de documentation expliquera cela mieux et plus de détails

En quelques mots, si vous implémentez la fonction index, vous pouvez soit retourner une chaîne (la page entière HTML, qui semble être ce que vous vous dirigez vers), ou un dictionnaire pour 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() 

Sinon, écrire un contrôleur modèle html dans les vues/ index.html (ou un autre fichier si vous insérez le response.view=... dans votre fonction, 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) 
+0

Merci pour votre aide. après avoir ajouté les lignes précédentes à ma fonction quoi écrire au retour de la fonction "au lieu de retourner rows.xml() pour afficher une page html" – Neveen

+0

De rien. J'ai juste ajouté un peu pour la page entière (qui était la question originale), vérifiez la commande Edit: remarque cependant. – RedGlyph

+0

Je ne comprends pas comment > response.view = 'template.html' peut me ghelp pour résoudre mon problème. J'ai vérifié le document et je ne comprends pas. Merci – Neveen

0

Juste PREPEND/append à la chaîne qui rows.xml() retours:

html = '<html><head>...</head><body>' + rows.xml() + '</body></html>' 
+0

je l'ai écrit cette ligne: data = " "+ rows.xml +"" et, il affiche l'erreur suivante: 'TypeError: ne peut pas concaténer ' 'objets' str' et' instancemethod – Neveen

+0

Oups ... J'ai oublié le «() "après xml. Fixé. –

Questions connexes