我从CherryPy v18.0.1开始,并停留在教程6,here中。我也在运行Python v3.7。从教程中调用style.css表时,我始终收到404错误,并且不确定问题出在哪里。我已经看到出于安全原因需要设置“ / static”目录,但是事情并未按预期进行。这是我定义的:
import os, os.path
import random
import string
import cherrypy
class StringGenerator(object):
@cherrypy.expose
def index(self):
return """<html>
<head>
<link href="style.css" rel="stylesheet">
</head>
<body>
<form method="get" action="generate">
<input type="text" value="8" name="length" />
<button type="submit">Show me the number!</button>
</form>
</body>
</html>"""
@cherrypy.expose
def generate(self, length=8):
some_string = ''.join(random.sample(string.hexdigits, int(length)))
cherrypy.session['mystring'] = some_string
return some_string
@cherrypy.expose
def display(self):
return cherrypy.session['mystring']
if __name__ == '__main__':
conf = {
'/': {
'tools.sessions.on': True,
'tools.staticdir.root': 'C:/python37'
},
'/static': {
'tools.staticdir.on': True,
'tools.staticdir.dir': 'static/Scripts/css'
}
}
cherrypy.quickstart(StringGenerator(), '/', conf)
基于我的有限知识,我将根目录设置为“ C:/ python37”,文件目录设置为“ static / Scripts / css”,然后在以下位置调用样式表:
<link href="style.css" rel="stylesheet">
对此进行任何澄清都很好。谢谢大家。
答案 0 :(得分:0)
在上面链接的教程中:
tools.staticdir.root
是“我们所有静态内容的根目录” tools.staticdir.dir
是“所有以/ static开头的URL将作为静态内容作为根目录的直接子目录。” 这意味着root
目录应该是您所有内容(HTML,CSS,图像,字体...)所在的目录。不是您的python安装根目录。
静态dir
只是根目录中的子目录。可以将其命名为任何您想要的名称。 CherryPy将配置字典中用作键的/static
路径映射到根目录中的真实名称。
示例:
conf = {
'/': {
'tools.sessions.on': True,
'tools.staticdir.root': 'C:/users/chad/tutorials/7'
},
'/static': {
'tools.staticdir.on': True,
'tools.staticdir.dir': 'public-content'
}
}
然后,在此示例中,您应使用名为C:/users/chad/tutorials/7
的子文件夹,将public-content
创建为所有静态内容的根目录,并在其中放置任何文件夹样式和任何其他公共内容。
对于样式表,可以在(css
)中有一个C:/users/chad/tutorials/7/public-content/css
子文件夹,并将style.css
放在其中。您将通过以下方式链接到它:
<link href="/static/css/style.css" rel="stylesheet">
======= ###
URL中的static
路径(标记为=
)来自用作配置文件中密钥的/static
。
css
路径(标记为#
)来自C:/users/chad/tutorials/7/static-content
内的文件夹。
请注意,静态文件夹的真实名称public-content
不会出现在URL中。
应用这些规则,您可以拥有所需的任何目录结构。例如,如果您想要C:/users/chad/tutorials/7/public-content/images
中的图片,则可以这样链接到它们:
<img src="/static/images/logo.png">
====== ######