Turbogears-dependencies
TurboGears-依存関係
TurboGearsプロジェクトには、次のディレクトリが含まれています-
- Config -プロジェクトのセットアップと構成が依存する場所
- コントローラー-すべてのプロジェクトコントローラー、Webアプリケーションのロジック
- i018n -サポートされている言語の翻訳ファイル
- Lib -ユーティリティPython関数とクラス
- モデル-データベースモデル
- 公開静的ファイル-CSS、JavaScript、画像
- テンプレート-コントローラーによって公開されるテンプレート。
- テスト-完了したテストのセット。
- Websetup -アプリケーションのセットアップ時に実行する機能。
プロジェクトをインストールする方法
このプロジェクトをインストールする必要があります。 setup.py はプロジェクトのベースディレクトリに既に提供されています。 このスクリプトが実行されると、プロジェクトの依存関係がインストールされます。
Python setup.py develop
デフォルトでは、プロジェクトのセットアップ時に次の依存関係がインストールされます-
- ビーカー
- げんし
- zope.sqlalchemy
- sqlalchemy
- アレンビック
- repoze.who
- tw2.forms
- tgext.admin≥0.6.1
- WebHelpers2
- バベル
インストール後、シェルで次のコマンドを発行して、開発サーバーでプロジェクトの提供を開始します-
Gearbox serve –reload –debug
上記のコマンドに従って、ビルド済みのサンプルプロジェクトを提供します。 ブラウザで http://localhost:8080 を開きます。 この既製のサンプルアプリケーションは、TurboGearsフレームワーク自体について簡単に紹介しています。
このHelloプロジェクトでは、デフォルトのコントローラーがコントローラーディレクトリに Hello/hello/controllers.root.py として作成されます。 次のコードで 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からパラメーターとして名前を受け入れるように設計されています。
「ギアボックスサービス」コマンドでサーバーを起動した後、 http://localhost:8080 。 Hello Worldメッセージは、次のURLが入力されてもブラウザに表示されます-
*http://localhost:8080/*
*http://localhost:8080/index*
これらすべてのURLは* RootController.index()メソッドにマッピングされます。 このクラスには、URLが特定の関数にマッピングされていない場合に呼び出される _default()*メソッドもあります。 URLへの応答は、@ expose()デコレーターによって関数にマップされます。
URLから公開された関数にパラメーターを送信することができます。 次の関数は、URLから名前パラメーターを読み取ります。
@expose()
def sayHello(self, name):
return '<h3>Hello %s</h3>' %name
次の出力は、URLに対する応答としてブラウザに表示されます- http://localhost:8080/?name = MVL
Hello MVL
TurboGearsは、URLパラメーターを関数の引数に自動的にマップします。 RootControllerクラスはBaseControllerから継承されます。 これは、アプリケーションの* libフォルダー*で base.py として定義されます。
そのコードは次のとおりです-
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メソッドにディスパッチします。