TurboGears – 관리자 액세스

TurboGears는 tgext.crud 및 sprox로 구동되는 tgext.admin 확장을 제공합니다. 이 Sprox는 데이터베이스 스키마에서 직접 웹 위젯을 만드는 데 사용되는 패키지입니다. 이것은 간단한 관리 페이지를 자동으로 만드는 데 사용할 수 있으며 새로 빠른 시작 응용 프로그램에서 / admin 페이지를 지원하는 도구 키트입니다.

기본적으로 관리자는 프로젝트 models / __ init__.py에서 가져온 모든 모델에 대한 자동 생성 액세스를 제공합니다.

TurboGears 관리자를 만드는 방법

기본 TurboGears 관리자는 AdminController 클래스의 객체로 생성됩니다-

from tgext.admin.controller import AdminController

class RootController(BaseController):
   admin = AdminController(model, DBSession, config_type = TGAdminConfig)

이렇게하면 기본 TurboGears 관리자 구성으로 모든 모델에 대한 관리자가 생성됩니다.

관리자를 통해 설정 단계에서 사용자가 생성되었습니다. 이제 TurboGears 관리자에 액세스 할 수 있습니다.http://localhost:8080/admin이 페이지에 처음 액세스하면 인증을 요청합니다. setup-app 명령이 생성 한 사용자의 사용자 이름과 비밀번호를 제공하면됩니다.

Username: manager
Password: managepass

빠른 시작 프로젝트에 로그인하려면 RootController 클래스 (controllers / root.py)에 다음 함수를 추가합니다.

from hello.lib.base import BaseController
from tg import expose, flash, redirect, request,url, lurl
from tg import redirect, validate
from hello import model
from hello.model import DBSession
from tgext.admin.tgadminconfig import BootstrapTGAdminConfig as TGAdminConfig
from tgext.admin.controller import AdminController
from tg.exceptions import HTTPFound

class RootController(BaseController):
   admin = AdminController(model, DBSession, config_type =  TGAdminConfig)
   
   @expose('hello.templates.index')
   def index(self):
      return dict(page = 'index')
   
   @expose('hello.templates.login')
   def login(self, came_from = lurl('/'), failure = None,    login = ''):
	
      if failure is not None:
         if failure == 'user-not-found':
            flash(_('User not found'), 'error')
         elif failure == 'invalid-password':
            flash(_('Invalid Password'), 'error')
			
      login_counter = request.environ.get('repoze.who.logins', 0)
		
      if failure is None and login_counter > 0:
         flash(_('Wrong credentials'), 'warning')
		 
      return dict(page = 'login', login_counter = str(login_counter), 
         came_from = came_from, login = login)
   @expose()
	
   def post_login(self, came_from = lurl('/')):
      if not request.identity:
         
         login_counter = request.environ.get('repoze.who.logins', 0) + 1
            redirect('/login', params = dict(came_from = came_from,
            __logins = login_counter))
		
         userid = request.identity['repoze.who.userid']
         flash(('Welcome back, %s!') % userid)
			
         return HTTPFound(location = came_from)

서버를 시작한 후 다음을 방문하여 '빠른 시작'애플리케이션에 로그인하십시오. http://localhost:8080/login그런 다음 위에 표시된대로 관리자 자격 증명을 입력합니다. 브라우저는 아래와 같은 관리자 페이지를 표시합니다.

이 페이지에는이 애플리케이션에서 생성 된 모든 모델이 표시됩니다. 모델을 클릭하면 항목 목록을 볼 수 있습니다.

이 데이터 그리드 상단의 '새로 만들기'버튼을 사용하면 레코드를 추가 할 수 있습니다. 마찬가지로, 레코드 편집 및 삭제를위한 작업 버튼도이 데이터 그리드의 작업 열에 제공됩니다. 조건부로 레코드를 선택하는 검색 상자도 표시됩니다.