我正在使用webpy framefork。我想在其中一个请求上提供静态文件。在webpy框架中是否有特殊方法或者我只需要读取并返回该文件?
答案 0 :(得分:11)
如果您正在运行开发服务器(没有apache):
在运行web.py服务器的脚本位置创建名为static的目录(也称为文件夹)。然后将要提供的静态文件放在静态文件夹中。
例如,网址http://localhost/static/logo.png会将图像./static/logo.png发送到客户端。
参考:http://webpy.org/cookbook/staticfiles
更新。如果您确实需要在/
上提供静态文件,则只需使用重定向:
#!/usr/bin/env python
import web
urls = (
'/', 'index'
)
class index:
def GET(self):
# redirect to the static file ...
raise web.seeother('/static/index.html')
app = web.application(urls, globals())
if __name__ == "__main__": app.run()
答案 1 :(得分:6)
在过去的几个小时里我一直在努力...哎呀!
找到两个对我有用的解决方案...... 1 - 在.htaccess中在ModRewrite行之前添加此行:
RewriteCond %{REQUEST_URI} !^/static/.*
这将确保不会重写对/ static /目录的请求以转到code.py脚本。
2 - 在code.py中为每个目录添加一个静态处理程序和一个url条目:
urls = (
'/' , 'index' ,
'/add', 'add' ,
'/(js|css|images)/(.*)', 'static',
'/one' , 'one'
)
class static:
def GET(self, media, file):
try:
f = open(media+'/'+file, 'r')
return f.read()
except:
return '' # you can send an 404 error here if you want
注意 - 我从web.py google群组中偷了这个,但找不到dang帖了!
其中任何一个都适用于我,包括web.py的模板和直接调用我放入“静态”的网页
答案 2 :(得分:1)
我不建议使用web.py提供静态文件。你最好配置apache或nginx。
答案 3 :(得分:0)
其他答案对我不起作用。 您可以先在app.py中加载html文件,甚至可以在app.py中编写html文件。 然后,可以使索引类的GET方法返回静态html。
index_html = '''<html>hello world!</html>'''
class index:
def GET(self):
return index_html