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
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()
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”
Czy zauważyłeś pewne korzyści z tych metod na http://webpy.org/cookbook/staticfiles? – dimo414
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ń. –
@tom - dzięki! zaoszczędziłeś mi kilka godzin na tym poście. – incognick
Nie polecam służąc statycznych plików z sieci .py. Lepiej mieć skonfigurowany apache lub nginx.
dlaczego nie? byłoby dobrze zrozumieć twoje powody. – Octopus
Ponieważ będzie wolny –
to jest plik tylko/statycznej ścieżki, potrzebuję służyć index.html na żądanie ścieżką/ – codez
@codez: Zaktualizowałem moją odpowiedź. – miku
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