Bottle 网络应用程序不提供静态 css 文件
Bottle web app not serving static css files
尽管我使用的是 static_file 方法,但我的 Bottle Web 应用程序无法为我的 main.css 文件提供服务。
app.py
from bottle import *
from xml.dom import minidom
@route('/')
def index():
return template("index")
@route('/glossaryXML')
def glossary():
doc_def = minidom.parse("table_definitions.xml")
terms = doc_def.getElementsByTagName("str_term")
defins = doc_def.getElementsByTagName("str_definition")
return template("list", terms=terms, defins=defins)
@route('<filename>.css')
def stylesheets(filename):
return static_file(filename, root='static')
@error(404)
def fourofour(error):
return "Error"
run(host='localhost', port=8080, debug=True)
我要访问的页面是索引页,其中index.tpl看起来像
<!DOCTYPE HTML>
<html>
<head>
<title>ICT Applications Glossary</title>
<link type="text/css" href="main.css" rel="stylesheet">
</head>
<body>
It works
</body>
</html>
我的 CSS 文件位于名为 "static" 的文件夹中,该文件夹位于我的根文件夹中
而是像这样指定您的静态路由
@route('/<filename:path>')
def send_static(filename):
return static_file(filename, root='static/')
这将为您的静态目录中的任何文件提供服务,而不仅仅是 css。
使其样式表特定
@get('/<filename:re:.*\.css>')
def stylesheets(filename):
return static_file(filename, root='static/')
注意: 对于后一个选项,您可以将样式表放在它们自己的目录中 'static/css' 或只是 'css' 并将它们与其他静态资源分开(脚本、图像等)来执行此操作只需将 root
参数指定为该目录,例如`root='static/css'.
我看到了 2 个问题:
CSS 文件的路径应以斜杠开头,即
@route('/<filename>.css')
只有模式的匹配部分被传递给stylesheets()
中
filename
参数,例如而不是 main.css
,它将是
main
。将代码更改为:
@route('/<filename>.css')
def stylesheets(filename):
return static_file('{}.css'.format(filename), root='static')
或者...将您的 main.css 文件重命名为 main.tpl,书挡为 <style>
和 </style>
,将其与其他模板一起移动到 /views 目录中,然后简单地添加到 return 行的开头:
return (template ("main"), template ("list", terms=terms, defins=defins))
尽管我使用的是 static_file 方法,但我的 Bottle Web 应用程序无法为我的 main.css 文件提供服务。
app.py
from bottle import *
from xml.dom import minidom
@route('/')
def index():
return template("index")
@route('/glossaryXML')
def glossary():
doc_def = minidom.parse("table_definitions.xml")
terms = doc_def.getElementsByTagName("str_term")
defins = doc_def.getElementsByTagName("str_definition")
return template("list", terms=terms, defins=defins)
@route('<filename>.css')
def stylesheets(filename):
return static_file(filename, root='static')
@error(404)
def fourofour(error):
return "Error"
run(host='localhost', port=8080, debug=True)
我要访问的页面是索引页,其中index.tpl看起来像
<!DOCTYPE HTML>
<html>
<head>
<title>ICT Applications Glossary</title>
<link type="text/css" href="main.css" rel="stylesheet">
</head>
<body>
It works
</body>
</html>
我的 CSS 文件位于名为 "static" 的文件夹中,该文件夹位于我的根文件夹中
而是像这样指定您的静态路由
@route('/<filename:path>')
def send_static(filename):
return static_file(filename, root='static/')
这将为您的静态目录中的任何文件提供服务,而不仅仅是 css。
使其样式表特定
@get('/<filename:re:.*\.css>')
def stylesheets(filename):
return static_file(filename, root='static/')
注意: 对于后一个选项,您可以将样式表放在它们自己的目录中 'static/css' 或只是 'css' 并将它们与其他静态资源分开(脚本、图像等)来执行此操作只需将 root
参数指定为该目录,例如`root='static/css'.
我看到了 2 个问题:
CSS 文件的路径应以斜杠开头,即
@route('/<filename>.css')
只有模式的匹配部分被传递给
stylesheets()
中filename
参数,例如而不是main.css
,它将是main
。将代码更改为:@route('/<filename>.css') def stylesheets(filename): return static_file('{}.css'.format(filename), root='static')
或者...将您的 main.css 文件重命名为 main.tpl,书挡为 <style>
和 </style>
,将其与其他模板一起移动到 /views 目录中,然后简单地添加到 return 行的开头:
return (template ("main"), template ("list", terms=terms, defins=defins))