TurboGears-종속성
TurboGears 프로젝트는 다음 디렉토리를 포함합니다-
Config − 프로젝트 설정 및 구성이 의존하는 곳
Controllers − 모든 프로젝트 컨트롤러, 웹 애플리케이션 로직
i018n − 지원되는 언어의 번역 파일
Lib − 유틸리티 파이썬 함수 및 클래스
Model − 데이터베이스 모델
Public Static Files − CSS, JavaScript 및 이미지
Templates − 컨트롤러에 의해 노출 된 템플릿.
Tests − 완료된 테스트 세트.
Websetup − 애플리케이션 설정시 실행할 기능.
프로젝트를 설치하는 방법
이제이 프로젝트를 설치해야합니다. ㅏsetup.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 프로젝트에서 기본 컨트롤러는 controllers 디렉토리에 다음과 같이 생성됩니다. 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에서 이름을 매개 변수로 허용하도록 설계되었습니다.
'gearbox serve'명령을 통해 서버를 시작한 후 http://localhost:8080. 다음 URL을 입력해도 브라우저에 Hello World 메시지가 표시됩니다.
http://localhost:8080/
http://localhost:8080/index
이러한 모든 URL은 RootController.index()방법. 이 클래스는 또한_default()URL이 특정 함수에 매핑되지 않을 때마다 호출되는 메서드입니다. 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에서 상속됩니다. 이것은 다음과 같이 정의됩니다.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 메서드로 디스패치합니다.