2010-06-04 13 views
0

Ce qui suit est le résultat des problèmes de cheminement CherryPy et css que j'ai récemment publiés, tous deux ayant été résolus, mais un autre problème est survenu.Configuration CherryPy pour l'accès au fichier CSS

J'ai une page html que je prévisualise dans un navigateur (via l'éditeur/IDE) et qui appelle un fichier css depuis un dossier css en parallèle avec mon dossier d'application (contenant le fichier main.py et My.html). Pour cela, j'utilise le chemin relatif dans l'en-tête html ...

<link rel="stylesheet" href="..\css\commoncss.css" type="text/css"> 

Tout bien jusqu'à présent. Cependant, quand je lance Main.py, le fichier css ne peut être trouvée, et la page semble un gâchis :-(Le fichier de configuration du CP comprend la ligne suivante ...

tools.staticdir.root = "my\app\folder" # contains Main.py and My.html 

mais pas d'autres déclarations de staticdir parce que CP devrait chercher .. \ css \ commoncss.css par rapport au dossier racine statique (ai-je raison?)

Je pourrais avoir mon dossier CSS comme dossier de premier niveau (alors je pourrais utiliser href = "/ css/commoncss "et declare/css comme staticdir), mais c'est moche Sinon, le dossier CSS pourrait être un sous-dossier du dossier de l'application, mais j'ai vraiment besoin de la liberté pour pouvoir mettre le (s) fichier (s) .css dans un autre chemin si possible (peut être commun à plusieurs applications.)

Je voudrais vraiment résoudre ce problème, car sinon, le concepteur html ne peut pas utiliser le même modèle que le programmeur Python sans modifier la directive href.

Toute aide serait appréciée.

Alan

Répondre

1

mais pas d'autres déclarations de staticdir parce que le CP devrait chercher .. \ css \ commoncss.css par rapport au dossier racine statique (suis-je pas?)

Vous ne pouvez pas accéder à votre répertoire de fichiers physiques (répertoire statique) via des URL, ni vous ne voulez pas.

Cherrypy recherche le fichier css relatif à votre fichier HTML dans la hiérarchie d'URL. Si votre fichier HTML est à la racine, cela ne fonctionnera pas. Si c'est à, disons: /stuff/blarg.html, alors il descendrait à la racine et chercherait le dossier css.

Je pense qu'il est plus facile de donner un chemin absolu, car il est raisonnable de prévoir que le répertoire css soit dans un endroit connu: « /css/commoncss.css »

+0

Merci Ryan - on dirait que je vais devoir renoncer à la commodité de prévisualisation du code HTML directement dans un navigateur. Un petit prix à payer, mais une nuisance quand même. Cordialement. –

Questions connexes