2010-05-21 17 views
6

Étant donné une vue avec mise en page, comment puis-je charger des fichiers statiques (CSS et JS, essentiellement) dans la tête < > à partir du fichier de vue?Comment charger les fichiers statiques de la vue HTML dans web2py?

layout.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{=T.accepted_language or 'en'}}"> 
    <head> 
     <title>{{=response.title or request.application}}</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <!-- include requires CSS files 
     {{response.files.append(URL(request.application,'static','base.css'))}} 
     {{response.files.append(URL(request.application,'static','ez-plug-min.css'))}} 
     --> 
     {{include 'web2py_ajax.html'}} 
    </head> 
    <body> 
     {{include}} 
    </body> 
</html> 

myview.html

{{extend 'layout.html'}} 
{{response.files.append(URL(r=request,c='static',f='myview.css'))}} 

<h1>Some header</h1> 
<div> 
    some content 
</div> 

Dans l'exemple ci-dessus, le fichier "myview.css" est soit ignorée par web2py ou dépouillé par le navigateur.

Alors, quel est le meilleur moyen de charger des fichiers spécifiques à une page comme ce fichier CSS? Je préfère ne pas bourrer tous mes fichiers statiques dans ma mise en page.

Répondre

7

En myview.html inverse les deux premières lignes

{{response.files.append(URL(r=request,c='static',f='myview.css'))}} 
{{extend 'layout.html'}} 

esprit que 1.78.1 et 1.78.2 avait un bug ne permettait pas que cela fonctionne. Il a été corrigé en 1.78.3 le même jour. Le fichier response.file.append (...) peut également être déplacé dans l'action du contrôleur qui en a besoin. Vous n'êtes pas censé mettre la logique avant l'extension mais vous définissez les variables à passer à la vue étendue.

+0

Parfait. Merci! – MikeWyatt