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.pylib 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 메서드로 디스패치합니다.