2010-05-21 8 views
6

Angesichts einer Ansicht mit Layout, wie kann ich statische Dateien (CSS und JS, im Wesentlichen) in die <Kopf> aus der Ansichtsdatei laden?Wie lade ich statische Dateien aus View HTML in 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> 

Im obigen Beispiel wird die "myview.css" Datei entweder durch web2py oder gezupft durch die ignoriert Browser.

Was ist der beste Weg, um seitenspezifische Dateien wie diese CSS-Datei zu laden? Ich würde lieber nicht alle meine statischen Dateien in mein Layout stopfen.

Antwort

7

In myview.html die ersten beiden Zeilen

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

Geist umkehren, dass 1.78.1 und 1.78.2 ein Fehler dies funktioniert nicht zulassen, hatten haben. Es wurde am selben Tag in 1.78.3 behoben. Das response.file.append (...) kann auch in der Controller-Aktion verschoben werden, die es benötigt. Sie sollten keine Logik vor extend einfügen, aber Sie definieren Variablen, die an die erweiterte Ansicht übergeben werden sollen.

+0

Perfekt. Vielen Dank! – MikeWyatt

Verwandte Themen