TurboGears - Yönetici Erişimi

TurboGears, tgext.crud ve sprox tarafından desteklenen tgext.admin uzantısını sağlar. Bu Sprox, doğrudan veritabanı şemasından web widget'larının oluşturulması için kullanılan bir pakettir. Bu, otomatik olarak basit yönetim sayfaları oluşturmak için kullanılabilir ve yeni hızlı başlatılan uygulamalarda / admin sayfasına güç sağlayan araç setidir.

Varsayılan olarak, yönetici proje modellerinize / __ init__.py içe aktarılan tüm modellere otomatik olarak oluşturulmuş bir erişim sağlayacaktır.

TurboGears Yöneticisi Nasıl Oluşturulur

Varsayılan TurboGears yöneticisi, AdminController sınıfının bir nesnesi olarak oluşturulur -

from tgext.admin.controller import AdminController

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

Bu, varsayılan TurboGears yönetici yapılandırmasına sahip tüm modeller için bir yönetici oluşturur.

Yönetici aracılığıyla, kurulum aşamasında bir kullanıcı oluşturulmuştur. Artık, TurboGears Admin'e şu adresten erişmek mümkündür:http://localhost:8080/adminBu sayfaya ilk erişildiğinde kimlik doğrulaması istenecektir. Setup-app komutunun bizim için oluşturduğu kullanıcının kullanıcı adını ve şifresini girebilirsiniz -

Username: manager
Password: managepass

Hızlı başlatılan projede oturum açmak için, aşağıdaki işlevleri RootController sınıfına ekleyin (denetleyiciler / 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)

Sunucuyu başlattıktan sonra ve adresini ziyaret ederek 'hızlı başlangıç' uygulamasına giriş yapın. http://localhost:8080/loginve sonra yukarıda gösterildiği gibi yönetici kimlik bilgilerini girin. Tarayıcı, aşağıda gösterilene benzer bir yönetici sayfası görüntüleyecektir -

Sayfa, bu uygulamada oluşturulan tüm modelleri gösterir. Girişlerin listesini görmek için herhangi bir modeli tıklayabilirsiniz -

Bu datagridin üstündeki 'New' butonu kaydın eklenmesine izin verir. Benzer şekilde, bir kaydı düzenlemek ve silmek için eylem düğmeleri de bu datagrid'in eylemler sütununda sağlanır. Kayıtları koşullu olarak seçmek için bir arama kutusu da görüntülenir.