如何在webpy中提供文件?

时间:2011-01-20 19:21:30

标签: python web.py

我正在使用webpy framefork。我想在其中一个请求上提供静态文件。在webpy框架中是否有特殊方法或者我只需要读取并返回该文件?

4 个答案:

答案 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