TurboGears-依存関係

TurboGearsプロジェクトには、次のディレクトリが含まれています-

  • Config −プロジェクトのセットアップと構成が依存する場所

  • Controllers −すべてのプロジェクトコントローラー、Webアプリケーションのロジック

  • i018n −サポートされている言語の翻訳ファイル

  • Lib −ユーティリティpython関数とクラス

  • Model −データベースモデル

  • Public Static Files − CSS、JavaScript、画像

  • Templates −コントローラーによって公開されたテンプレート。

  • Tests −実行された一連のテスト。

  • Websetup −アプリケーションのセットアップ時に実行する機能。

プロジェクトをインストールする方法

このプロジェクトをインストールする必要があります。Asetup.pyプロジェクトのベースディレクトリですでに提供されています。このスクリプトが実行されると、プロジェクトの依存関係がインストールされます。

Python setup.py develop

デフォルトでは、プロジェクトのセットアップ時に次の依存関係がインストールされます-

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

インストール後、シェルで次のコマンドを発行して、開発サーバーでプロジェクトの提供を開始します-

Gearbox serve –reload –debug

上記のコマンドに従って、ビルド済みのサンプルプロジェクトを提供します。開いたhttp://localhost:8080ブラウザで。この既製のサンプルアプリケーションは、TurboGearsフレームワーク自体について簡単に紹介しています。

このハロープロジェクトでは、デフォルトのコントローラーがコントローラーディレクトリに次のように作成されます。 Hello/hello/controllers.root.py。私たちにさせてmodify root.py 次のコードで-

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"

基本的な作業アプリケーションの準備ができたら、コントローラークラスにビューを追加できます。の中にMycontroller 上記のクラス、新しいメソッド sayHello()が追加されます。ザ・@expose() デコレータが添付されます /sayHelloそれへのURL。この関数は、URLからパラメータとして名前を受け入れるように設計されています。

'gearboxserve'コマンドでサーバーを起動した後、 http://localhost:8080。次のURLを入力しても、HelloWorldメッセージがブラウザに表示されます-

http://localhost:8080/

http://localhost:8080/index

これらのURLはすべてにマップされます RootController.index()方法。このクラスにも_default()URLが特定の関数にマップされていない場合に呼び出されるメソッド。URLへの応答は、@ expose()デコレータによって関数にマップされます。

URLから公開された関数にパラメーターを送信することができます。次の関数は、URLからnameパラメーターを読み取ります。

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

次の出力は、URLへの応答としてブラウザに表示されます- http://localhost:8080/?name=MVL

Hello MVL

TurboGearsは、URLパラメーターを関数の引数に自動的にマップします。RootControllerクラスはBaseControllerから継承されます。これは次のように定義されますbase.py の中に lib folder アプリケーションの。

そのコードは次のとおりです-

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__ リクエストがルーティングされるControllerメソッドにディスパッチします。