如何在webpy中提供文件?

如何在webpy中提供文件?

问题描述:

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

如果您正在运行开发服务器(不阿帕奇):

创建一个目录(也称为文件夹)调用运行web.py服务脚本的位置是静态的。然后将您想要提供的静态文件放置在静态文件夹中。

例如,URL​​会将图像./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() 
+0

多数民众赞成在文件只在/静态路径,我需要服务index.html请求与路径/ – codez 2011-01-20 19:26:23

+0

@codez:更新我的答案。 – miku 2011-01-20 19:34:01

+0

这只适用于你直接从它所在的文件夹运行web.py应用程序。如果你想运行/path/to/my/web/app.py,那么你运气不好。 – Octopus 2013-11-22 05:01:46

我这个挣扎在过去的几个小时......呸!

发现了两个解决方案,都为我工作... 1 - 在.htaccess的ModRewrite行之前添加此行:

RewriteCond %{REQUEST_URI} !^/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谷歌组,但无法找到当发布更多!

这些无论是工作对我来说,无论是在对web.py模板和直接调用一个网页,我投入“静态”

我不建议与服务网络静态文件的.py。你最好配置apache或nginx。