Sto usando webpy framefork. Voglio servire file statico su una delle richieste. C'è un metodo speciale nel framework webpy o devo solo leggere e restituire quel file?Come pubblicare un file in webpy?
risposta
Se si esegue il server dev (senza apache):
Creare una directory (noto anche come una cartella) chiamato statico nella posizione dello script che esegue il server web.py. Quindi posiziona i file statici che desideri pubblicare nella cartella statica.
Ad esempio, l'URL http://localhost/static/logo.png invierà l'immagine ./static/logo.png al client.
Riferimento: http://webpy.org/cookbook/staticfiles
Update. Se si ha realmente bisogno per servire un file statico sul /
si può semplicemente utilizzare un reindirizzamento:
#!/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()
ho lottato con questo per l'ultimo paio di ore ... Yuck!
trovato due soluzioni che sono entrambi lavorano per me ... 1 - in .htaccess aggiungere questa linea prima della linea ModRewrite:
RewriteCond %{REQUEST_URI} !^/static/.*
Questo farà in modo che le richieste alla/directory/static sono NON riscritto per andare al tuo script code.py.
2 - nella code.py aggiungere un gestore di statica e una voce di URL per ciascuna delle diverse directory:
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
Nota - ho rubato questo dal gruppo web.py google, ma non riesce a trovare il dang post ancora!
Uno di questi ha lavorato per me, sia all'interno dei modelli per web.py e per una chiamata diretta ad una pagina web che ho messo in "statico"
Hai visto qualche vantaggio su questi metodi su http://webpy.org/cookbook/staticfiles? – dimo414
Ho ottenuto questo per funzionare - non ho potuto ottenere altri metodi di lavoro, quindi credo che sia un vantaggio ;-) Stavo lavorando su un account di hosting condiviso, quindi potrebbe essere stato un po 'della mia lotta. –
@tom - grazie! mi hai salvato un paio d'ore con questo post. – incognick
Non consiglio servire i file statici con web .py. Faresti meglio ad avere apache o nginx configurati per quello.
perché no? sarebbe utile capire le tue ragioni. – Octopus
Perché sarà lento –
questo serve solo file in/percorso statico, ho bisogno di servire index.html su richiesta con percorso/ – codez
@codez: aggiornata la mia risposta. – miku
funziona solo se si esegue l'app web.py direttamente dalla cartella in cui si trova. se vuoi eseguire /path/to/my/web/app.py sei sfortunato. – Octopus