web2py 连接 CSS

1 投票
2 回答
5282 浏览
提问于 2025-04-17 00:18

我正在学习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文件)。

撰写回答