2010-03-22 4 views
3

Je rencontre des problèmes lors du traitement d'une feuille de style XML statique pour accompagner certaines sorties générées dynamiquement à partir d'une application Web CherryPy. Même mon cas de test servant un fichier texte statique échoue.Problèmes de diffusion de fichiers statiques dans CherryPy 3.1

Le fichier statique blah.txt se trouve dans le répertoire /static dans le répertoire racine de l'application.

Dans mon fichier principal du site (conesearch.py ​​contient la classe en page de gestionnaire CherryPy ConeSearch):

import conesearch 
cherrypy.config.update('site.config') 
cherrypy.tree.mount(conesearch.ConeSearch(), "/ucac3", 'ucac3.config') 
... 

Et site.config je les options suivantes:

[/] 
tools.staticdir.root: conesearch.current_dir 

[/static] 
tools.staticdir.on: True 
tools.staticdir.dir: 'static' 

current_dir = os.path.dirname(os.path.abspath(__file__)) à conesearch.py

Cependant, ma page de test simple (tirée directement de http://www.cherrypy.org/wiki/StaticContent) échoue avec un 404:

def test(self): 
     return """ 
     <html> 
     <head> 
     <title>CherryPy static tutorial</title> 
     </head> 
     <body> 
     <a href="/static/blah.txt">Link</a> 
     </body> 
     </html>""" 
test.exposed = True 

Il tente d'accéder 127.0.0.1:8080/static/blah.txt, qui, par mon compte devrait être AOK. Des pensées ou des suggestions?

Cheers,

Simon

Répondre

3

je sers des fichiers statiques comme ceci:

config = {'/static': 
       {'tools.staticdir.on': True, 
       'tools.staticdir.dir': PATH_TO_STATIC_FILES, 
       } 
     } 

cherrypy.tree.mount(MyApp(), '/', config=config) 
+1

Non, toujours pas de joie j'ai peur. Merci quand même. Toujours obtenir un 404 sur 'blah.txt'. Si je comprends bien les dicts/fichiers de configuration de CherryPy, cela devrait fonctionner exactement de la même manière que les fichiers de configuration que j'ai configurés ci-dessus? –

4

cherrypy.config.update ne devrait recevoir un dictionnaire à un seul niveau (principalement server.* entrées), mais vous le transmettre un dictionnaire à plusieurs niveaux de paramètres qui devraient vraiment être par app (et donc passé à tree.mount).

Déplacez les sections [/] et [/static] de votre fichier site.config vers votre fichier ucac3.config, et cela devrait fonctionner correctement.

+0

Oh, et remplacez «Link» par «Link». ;) – fumanchu

+0

Trié. Fonctionne parfaitement maintenant, merci. –

1

J'ai une configuration similaire. Disons que je veux que la racine de mon site soit au http://mysite.com/site et que la racine de mon site/application soit à /chemin/vers/www.

je les paramètres de configuration suivants dans mon server.cfg et je suis trouver mes fichiers statiques sans problème:

[global] 
... 
app.mount_point = '/site' 
tools.staticdir.root = '/path/to/www/' 
[/static] 
tools.staticdir.on = True 
tools.staticdir.dir = 'static' 

Je sers des fichiers de dojo, etc, à partir du répertoire statique sans problème , ainsi que css. J'utilise également Genshi pour modéliser, et en utilisant l'appel Cherrypy.url() pour s'assurer que mes autres URL sont correctement définies. Cela me permet de changer app.mount_point et de mettre mes liens à jour aussi.

Questions connexes