2011-01-20 17 views
7

私はwebpyフレームフォークを使用しています。私は静的なファイルを要求の一つに提供したい。 Webpyフレームワークに特別なメソッドがあるのですか?それとも、そのファイルを読み込んで返すだけですか?webpyでファイルを提供するには?

答えて

10

あなたは(Apacheのなし)のdevのサーバーを実行している場合:

(もフォルダとして知られている)ディレクトリを作成しますが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

thatsは/ staticパスのみに対応していますので、ご要望に応じてindex.htmlを/ – codez

+0

@ codezに送ってください。 – miku

+0

これは、web.pyアプリケーションをそのフォルダにあるフォルダから直接実行する場合にのみ機能します。 /path/to/my/web/app.pyを実行したい場合、あなたは運が悪いです。 – Octopus

6

:あなたは本当に/上の静的ファイルを提供する必要がある場合は、単純に、リダイレクトを使用することができます!両方の私のために働いている

見つから2つのソリューション... 1 - .htaccessの中ModRewrite行の前に次の行を追加します。

RewriteCond %{REQUEST_URI} !^/static/.* 

これは/静的/ディレクトリへの要求があることを確認しますあなたのcode.pyスクリプトに行くために書き換えられません。私はweb.pyグーグルグループからこれを盗んだが、見つけることができません -

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 

注: -

2 code.pyに静的ハンドラといくつかのディレクトリのそれぞれのURLエントリを追加もうダン投稿!これらの

のどちらかがweb.pyのテンプレートの中に、私は「静的」に入れて、ウェブページへの直接呼び出しの両方、私のために働いた

+0

http://webpy.org/cookbook/staticfilesでこれらのメソッドにいくつかの利点がありますか? – dimo414

+0

私はこれを動かすことができました - 私は他の方法を働かせることができませんでしたので、それは利点だと思います;-)私は共有ホスティングアカウントで働いていたので、私の苦闘の一部があったかもしれません。 –

+1

@tom - ありがとう!あなたはこのポストで数時間私を救った。 – incognick

1

私はウェブと静的ファイルを提供することはお勧めしません。 .py。あなたはそれのために設定されたapacheまたはnginxを持つ方がよいでしょう。

+0

なぜですか?あなたの理由を理解することは有益でしょう。 – Octopus

+0

遅いので –

関連する問題