2010-05-21 16 views
6

Dato una vista con layout, come posso caricare file statici (CSS e JS, in sostanza) nella testa < > dal file di visualizzazione?Come caricare file statici dalla visualizzazione 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> 

Nell'esempio precedente, il file "myview.css" o è ignorato da web2py o spogliato dal browser.

Quindi qual è il modo migliore per caricare file specifici di pagine come questo file CSS? Preferirei non inserire tutti i miei file statici nel mio layout.

risposta

7

In myview.html invertire le prime due righe

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

Ricordate che 1.78.1 e 1.78.2 ha un bug non ha permesso questo lavoro. È stato corretto in 1.78.3 nello stesso giorno. Il response.file.append (...) può anche essere spostato nell'azione del controller che ne ha bisogno. Non è necessario inserire la logica prima dell'estensione, ma si definiscono le variabili da passare alla vista estesa.

+0

Perfetto. Grazie! – MikeWyatt

Problemi correlati