web2py 连接 CSS
我正在学习web2py 1.98.2,所以这个问题非常基础。在static/css文件夹里,我创建了一个basic.css文件,内容如下:
.auth_navbar {
top: 0px;
float: right;
padding: 3px 10px 3px 10px;
}
在layout.html文件中,我有:
<head>
...
{{response.files.append(URL('static','css/base.css'))}}
...
</head>
<body>
...
{{try:}}{{=auth.navbar(action=URL('default','user'))}}{{except:pass}}
...
</body>
控制器default.py的代码非常简单:
def index(): return dict(message="hello people")
最后,default/index.html看起来是这样的:
{{extend 'layout.html'}}
<h2>This is the default/index.html template</h2>
{{#=BEAUTIFY(response._vars)}}
我运行了这个应用程序,index.html如预期那样显示出来了。但是,CSS没有生效。我本来期待在页面源代码中看到以下这一行:
<link href="/welcome/static/css/base.css" rel="stylesheet" type="text/css" />
但它并没有出现。我漏掉了什么呢?
2 个回答
1
可能是你在 layout.html 的 body 标签里漏掉了:
{{include}}
这部分内容应该放在你的页面布局的主体部分。
3
{{response.files.append(URL('static','css/base.css'))}}
上面这行代码的意思是把base.css文件添加到response.files列表中。<link>
标签是由web2py_ajax.html这个模板生成的,而这个模板又包含在默认的layout.html里。所以,你需要确保web2py_ajax.html也被包含在你的layout.html中,并且要在那之前把base.css添加到response.files里。也就是说:
{{response.files.append(URL('static','css/base.css'))}}
{{include 'web2py_ajax.html'}}
注意,你的第一句话提到了basic.css,但你的代码中提到的是base.css——确保你使用的是正确的文件名(web2py自带一个base.css文件)。