TurboGears - Dépendances

Un projet TurboGears contient les répertoires suivants -

  • Config - Là où la configuration et la configuration du projet reposent

  • Controllers - Tous les contrôleurs de projet, la logique de l'application web

  • i018n - Fichiers de traduction pour les langues prises en charge

  • Lib - Fonctions et classes utilitaires python

  • Model - Modèles de base de données

  • Public Static Files - CSS, JavaScript et images

  • Templates - Modèles exposés par nos contrôleurs.

  • Tests - L'ensemble des tests effectués.

  • Websetup - Fonctions à exécuter lors de la configuration de l'application.

Comment installer un projet

Ce projet doit maintenant être installé. UNEsetup.pyest déjà fourni dans le répertoire de base du projet. Les dépendances de projet sont installées lorsque ce script est exécuté.

Python setup.py develop

Par défaut, les dépendances suivantes sont installées au moment de la configuration du projet -

  • Beaker
  • Genshi
  • zope.sqlalchemy
  • sqlalchemy
  • alembic
  • repoze.who
  • tw2.forms
  • tgext.admin ≥ 0.6.1
  • WebHelpers2
  • babel

Après l'installation, commencez à servir le projet sur le serveur de développement en exécutant la commande suivante dans le shell -

Gearbox serve –reload –debug

Suivez la commande mentionnée ci-dessus pour servir un exemple de projet prédéfini. Ouverthttp://localhost:8080dans le navigateur. Cet exemple d'application prête à l'emploi donne une brève introduction sur le framework TurboGears lui-même.

Dans ce projet Hello, le contrôleur par défaut est créé dans le répertoire des contrôleurs comme Hello/hello/controllers.root.py. Laissez-nousmodify root.py avec le code suivant -

from hello.lib.base import BaseController
from tg import expose, flash

class RootController(BaseController):
   movie = MovieController()
   @expose()
   def index(self):
      return "<h1>Hello World</h1>"
		
   @expose()
   def _default(self, *args, **kw):
      return "This page is not ready"

Une fois qu'une application de travail de base est prête, d'autres vues peuvent être ajoutées dans la classe de contrôleur. dans leMycontroller classe ci-dessus, une nouvelle méthode sayHello()est ajouté. le@expose() le décorateur attache /sayHelloURL vers lui. Cette fonction est conçue pour accepter un nom comme paramètre de l'URL.

Après avoir démarré le serveur via la commande 'gearbox serve', http://localhost:8080. Le message Hello World sera affiché dans le navigateur, même si les URL suivantes sont entrées -

http://localhost:8080/

http://localhost:8080/index

Toutes ces URL sont mappées vers RootController.index()méthode. Cette classe a également_default()méthode qui sera invoquée chaque fois qu'une URL n'est mappée à aucune fonction spécifique. La réponse à l'URL est mappée à une fonction par le décorateur @expose ().

Il est possible d'envoyer un paramètre à une fonction exposée depuis l'URL. La fonction suivante lit le paramètre de nom à partir de l'URL.

@expose()
def sayHello(self, name):
   return '<h3>Hello %s</h3>' %name

La sortie suivante sera vue dans le navigateur en réponse à l'URL - http://localhost:8080/?name=MVL

Hello MVL

TurboGears mappe automatiquement les paramètres d'URL aux arguments de fonction. Notre classe RootController est héritée de BaseController. Ceci est défini commebase.py dans le lib folder d’application.

Son code est le suivant -

from tg import TGController, tmpl_context
from tg import request

__all__ = ['BaseController']

def __call__(self, environ, context):
   tmpl_context.identity = request.identity
   return TGController.__call__(self, environ, context)

TGController.__call__ envoie à la méthode Controller vers laquelle la demande est acheminée.