Le routing des URLs se fait au travers des Controllers (bien la preuve que les urls sont des controleurs…)
C'est le controleur "par défaut" de turbogears. On créé un controlleur pour l'application en le faisant hériter de TGController. Par exemple :
class MonController(TGController):
Ensuite, chaques méthode sera exposée comme une url:
class MonController(TGController):
def home(self):
return "Hello here"ou
class MonController(TGController):
@expose('myapp.templates.home')
def home(self):
return {'message': 'Hello here'}Un contrôleur fournis par Turbogears utilisé à la racine d'un site pour le mapping d'url.
RootController(BaseController):
j'ai vu du code avec le décorateur et du code sans le décorateur.
Avec le décorateur on spécifie un template dans le décorateur et on renvoie un dictionnaire. Sans le décorateur j'ai vu des dico et des strings... bref, c'est pas très clair.
Dans le doute et tant que je n'en sais pas plus, on va dire ceci : le décorateur est obligatoire sur les méthodes que l'on expose (ça se tiens bien je trouve)
le contenu de "expose" indique quel template retourner. Par exemple:
'wiki20.templates.index'
ce qui va coresspondre à :
wiki20/ (le projet) / templates (le dossier de templates) / index.html (le fichier)
comme on le vois le ".html" est omis.
Le dictionnaire retourné est ensuite utilisé par le template.
Cette méthode permet de définir la racine d'une application. le code de la fonction va être appelé via site/ et via site/index
Quand aucune URL ne match avec une méthode, c'est cette méthode qui est appelée.
Le système de routing commence par le fichier "<app>/controllers/root.py" via la class RootController.
La class RootController hérite de BaseController un controleur fournis par turbogears. Elle définis d'autres controleurs dont je ne connais pas encore l'utilité : SecureController(), AdminController (même si j'ai bien une petite idée)