2011-01-20 15 views
7

Używam ramek typu webpy. Chcę wysłać plik statyczny na jedno z żądań. Czy w strukturze webpy jest specjalna metoda, czy muszę po prostu przeczytać i zwrócić ten plik?Jak wyświetlać plik w webpie?

Odpowiedz

10

Jeśli używasz serwera dev (bez apache):

Utwórz katalog (znany również jako folder) o nazwie statyczne w miejscu skryptu, który uruchamia serwer web.py. Następnie umieść pliki statyczne, które chcesz wyświetlić w folderze statycznym. Na przykład adres URL wyśle ​​obraz ./static/logo.png do klienta.

referencyjny: http://webpy.org/cookbook/staticfiles


Aktualizacja. Jeśli naprawdę potrzebujesz, aby służyć plik statyczny na / można po prostu użyć przekierowania:

#!/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

to jest plik tylko/statycznej ścieżki, potrzebuję służyć index.html na żądanie ścieżką/ – codez

+0

@codez: Zaktualizowałem moją odpowiedź. – miku

+0

działa to tylko wtedy, gdy uruchamiasz aplikację web.py bezpośrednio z folderu, w którym się znajduje. jeśli chcesz uruchomić /path/to/my/web/app.py, masz pecha. – Octopus

6

Walczyłem z tym przez ostatnie kilka godzin ... Fuj!

Znaleziono dwa rozwiązania, które są zarówno pracujący dla mnie ... 1 - w .htaccess dodać tę linię przed linią ModRewrite:

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

To będzie upewnić się, że wnioski do/katalogu są statyczne/NIE przepisane, aby przejść do skryptu code.py.

2 - w code.py dodać statyczny obsługi oraz wejście URL dla każdej z kilku katalogach:

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 

Uwaga - Ukradłem to z grupy web.py google ale nie mogę znaleźć dang post więcej!

Każda z nich pracował dla mnie, zarówno w szablonach dla web.py i dla bezpośredniego połączenia na stronie internetowej że ja kładę na „static”

+0

Czy zauważyłeś pewne korzyści z tych metod na http://webpy.org/cookbook/staticfiles? – dimo414

+0

Zabrałem to do roboty - nie mogłem uzyskać innych metod pracy, więc myślę, że to jest zaleta ;-) Pracowałem nad współdzielonym kontem hostingowym, więc być może niektóre z moich zmagań. –

+1

@tom - dzięki! zaoszczędziłeś mi kilka godzin na tym poście. – incognick

1

Nie polecam służąc statycznych plików z sieci .py. Lepiej mieć skonfigurowany apache lub nginx.

+0

dlaczego nie? byłoby dobrze zrozumieć twoje powody. – Octopus

+0

Ponieważ będzie wolny –

Powiązane problemy