Web.py 找不到文件
Web.py cannot find files
我有一个用 python 和 web.py 编写的网络服务器。
我想让它成为守护进程。于是就有了linux(debian)OS。
我写了一个代码。所以现在这个网络服务器作为守护进程启动,我可以在进程列表中看到它并在我的浏览器中到达主页。
我使用了web.py模块,这个模块中有渲染技术。该技术使用 html 模板创建网页(html 代码与 python 混合)。在此模板中,我使用标准 html 代码来添加 css 样式和图片。包含此类内容的文件夹位于守护进程 运行 文件的位置。
所以我的守护进程加载了这个模板。但是没有 css 或图像。我检查了模板代码的执行(输入一些文本字符串)- 一切正常。
所以有一个问题:为什么这个html无法访问其他内容,如何修复?
一件重要的事情:以前那只是网络服务器(不是守护进程),非守护进程版本(我保留了一份)很好!当我启动守护程序时出现所有问题。
希望得到您的帮助!
有一些代码部分:
#Daemon start file
class Hive(Daemon):
def run(self):
app = web.application(urls, globals())
app.run()
if __name__ == "__main__":
daemon = Hive('/tmp/daemon-example.pid')
if len(sys.argv) == 2:
if 'start' == sys.argv[1]:
sys.argv[1] = '8080'
daemon.start()
elif 'stop' == sys.argv[1]:
daemon.stop()
elif 'restart' == sys.argv[1]:
daemon.restart()
else:
print "Unknown command"
sys.exit(2)
sys.exit(0)
else:
print "usage: %s start|stop|restart" % sys.argv[0]
sys.exit(2)
--------------------------------------------------------
#home.html - template that realizes a part of main page and loads some
#picture. I've checked the "if" operator (that activates the <img> tag) - server
#executes it. On my page I see a place for picture (standard form when
#page cannot find the picture to download).
$def with (clients)
<!-- отображение данных о клиентах в базе: ip-адрес, состояние, привилегии
-->
<style type='text/css'>
.client { height: 40px; }
.client_current { border-left: 4px solid lightgreen; }
</style>
<!--<div><span class='glyphicon glyphicon-arrow-down'
style='margin-right: 10px;'></span><a href='#' class='_sh'
data-active='1' data-remote='.online'>Online</a></div>-->
<div style="min-height: 100px;">
<div>Online</div>
<div class='online'>
$code:
offline = False
$for client in clients:
$if not offline and not client.online:
$code:
offline = True
</div><div>Offline</div><div class='offline'>
$if client.admin:
<div class='client client-admin' style='clear: both; padding: 4px;'>
$else:
<div class='client' style='clear: both; padding: 4px;'>
<a href='#client$client.id' onclick='return activateClient(this);' id='client$client.id' class='client_item'>
<div class='img' style='float: left;'>
$if client.icon:
<img src='/powerhive-0.3.beta/static/img/wait.png' />
$else:
<img src='/powerhive-0.3.beta/static/img/wait.png' />
</div>
<div style='float: left; font-size: 10px; margin: 2px;'>
<div style='font-weight: bold; font-size: 11px;'>$client.ip</div>
$client.info
</div>
</a>
</div>
</div>
</div>
我找到了答案!
我在 url 中添加了这个字符串:'/(js|css|img)/(.*)', 'static',
。
class 静态是较早实现的。这个class是相似的:
class static:
def GET(self, media, file):
try:
f = open(media+'/'+file, 'r')
return f.read()
except:
return '404'
之后(最兴奋的部分):
如果我的守护进程无法访问我的静态文件夹,我将图像(以及 js 文件)的源参数替换为:http://localhost/static/img/wait.png
就是这样!可能这很粗鲁,但确实有效 ;)
我有一个用 python 和 web.py 编写的网络服务器。 我想让它成为守护进程。于是就有了linux(debian)OS。 我写了一个代码。所以现在这个网络服务器作为守护进程启动,我可以在进程列表中看到它并在我的浏览器中到达主页。
我使用了web.py模块,这个模块中有渲染技术。该技术使用 html 模板创建网页(html 代码与 python 混合)。在此模板中,我使用标准 html 代码来添加 css 样式和图片。包含此类内容的文件夹位于守护进程 运行 文件的位置。
所以我的守护进程加载了这个模板。但是没有 css 或图像。我检查了模板代码的执行(输入一些文本字符串)- 一切正常。
所以有一个问题:为什么这个html无法访问其他内容,如何修复?
一件重要的事情:以前那只是网络服务器(不是守护进程),非守护进程版本(我保留了一份)很好!当我启动守护程序时出现所有问题。
希望得到您的帮助!
有一些代码部分:
#Daemon start file
class Hive(Daemon):
def run(self):
app = web.application(urls, globals())
app.run()
if __name__ == "__main__":
daemon = Hive('/tmp/daemon-example.pid')
if len(sys.argv) == 2:
if 'start' == sys.argv[1]:
sys.argv[1] = '8080'
daemon.start()
elif 'stop' == sys.argv[1]:
daemon.stop()
elif 'restart' == sys.argv[1]:
daemon.restart()
else:
print "Unknown command"
sys.exit(2)
sys.exit(0)
else:
print "usage: %s start|stop|restart" % sys.argv[0]
sys.exit(2)
--------------------------------------------------------
#home.html - template that realizes a part of main page and loads some
#picture. I've checked the "if" operator (that activates the <img> tag) - server
#executes it. On my page I see a place for picture (standard form when
#page cannot find the picture to download).
$def with (clients)
<!-- отображение данных о клиентах в базе: ip-адрес, состояние, привилегии
-->
<style type='text/css'>
.client { height: 40px; }
.client_current { border-left: 4px solid lightgreen; }
</style>
<!--<div><span class='glyphicon glyphicon-arrow-down'
style='margin-right: 10px;'></span><a href='#' class='_sh'
data-active='1' data-remote='.online'>Online</a></div>-->
<div style="min-height: 100px;">
<div>Online</div>
<div class='online'>
$code:
offline = False
$for client in clients:
$if not offline and not client.online:
$code:
offline = True
</div><div>Offline</div><div class='offline'>
$if client.admin:
<div class='client client-admin' style='clear: both; padding: 4px;'>
$else:
<div class='client' style='clear: both; padding: 4px;'>
<a href='#client$client.id' onclick='return activateClient(this);' id='client$client.id' class='client_item'>
<div class='img' style='float: left;'>
$if client.icon:
<img src='/powerhive-0.3.beta/static/img/wait.png' />
$else:
<img src='/powerhive-0.3.beta/static/img/wait.png' />
</div>
<div style='float: left; font-size: 10px; margin: 2px;'>
<div style='font-weight: bold; font-size: 11px;'>$client.ip</div>
$client.info
</div>
</a>
</div>
</div>
</div>
我找到了答案!
我在 url 中添加了这个字符串:'/(js|css|img)/(.*)', 'static',
。
class 静态是较早实现的。这个class是相似的:
class static:
def GET(self, media, file):
try:
f = open(media+'/'+file, 'r')
return f.read()
except:
return '404'
之后(最兴奋的部分):
如果我的守护进程无法访问我的静态文件夹,我将图像(以及 js 文件)的源参数替换为:http://localhost/static/img/wait.png
就是这样!可能这很粗鲁,但确实有效 ;)