6.2. URL intelligentes
La façon normale de passer des paramètres à un script est d'utiliser une chaîne de requête (query string) dans l'url, ou des données de formulaire. Une alternative est de passer ces paramètres comme un composant de l'url, comme dans
http://host/path/script.py/foo/bar
; ici les paramètres pour le script sont
foo
et bar
Dans le script vous pouvez accéder à ces paramètres additionnels sous la forme d'un attribut du nom intégré THIS
, THIS.args
:
print "Les paramètres sont %s" %THIS.args
Un problème avec ces "url intelligentes" est que s'il faut écrire un lien, ou utiliser Include(), ou insérer une image ou du JavaScript, l'url doit être différente selon que le script a été appelé sans argument, ou avec un nombre d'arguments arbitraire dans l'urly number of parameters in the subpath
Par exemple si vous avez cette url relative dans le script :
print '<IMG SRC="images/pic.png">'
et que vous appelez le script par http://host/path/script.py/foo/bar
, le navigateur calculera une url absolue http://host/path/script.py/foo/images/pic.png
,
et exécutera le même script avec les paramètres foo,images,pic.png
- ce n'est pas ce que vous voulez !
Pour retrouver la bonne url, utilisez la fonction THIS.rel()
de cette façon :
print '<IMG SRC="%s">' %THIS.rel("images/pic.png")
THIS.rel
ajoute en début de l'url relative donnée en argument autant de
'../'
qu'il y a de paramètres dans l'url "intelligente"