2010-05-21 72 views
6

给定一个布局视图,如何从视图文件加载静态文件(本质上是CSS和JS)到<头>?如何在web2py中从视图HTML加载静态文件?

的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> 

在上面的例子中, “myview.css” 文件或者由的web2py忽略或由剥离出浏览器。

那么加载特定于页面的文件如此CSS文件的最佳方式是什么?我宁愿不把我所有的静态文件放入我的布局中。

回答

7

在myview.html扭转前两行

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

记住,1.78.1和1.78.2有一个bug并没有让这个工作。它在同一天被固定在1.78.3。 response.file.append(...)也可以在需要它的控制器动作中移动。您不应该在扩展之前放置逻辑,而是定义要传递给扩展视图的变量。

+0

完美。谢谢! – MikeWyatt 2010-05-21 12:54:59