TurboGears – 管理員訪問



TurboGears 提供了 tgext.admin 擴充套件,它由 tgext.crud 和 sprox 提供支援。Sprox 是一個用於直接從資料庫模式建立 Web 小部件的包。這可用於自動建立簡單的管理頁面,並且是新快速啟動應用程式中 /admin 頁面的工具包。

預設情況下,管理員將提供對專案 models/__init__.py 中匯入的所有模型的自動生成的訪問許可權。

如何建立 TurboGears 管理員

預設的 TurboGears 管理員作為 AdminController 類的物件建立:

from tgext.admin.controller import AdminController

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

這將使用預設的 TurboGears 管理員配置為所有模型建立管理員。

透過管理器,在設定階段已建立使用者。現在,可以訪問位於 https://:8080/admin 的 TurboGears 管理員。首次訪問此頁面時,將要求進行身份驗證。您可以簡單地提供 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)

啟動伺服器後,訪問 https://:8080/login 登入“快速啟動”應用程式,然後輸入上面顯示的管理器憑據。瀏覽器將顯示如下所示的管理員頁面:

Admin pade

該頁面顯示在此應用程式中建立的所有模型。您可以單擊任何模型以檢視其條目的列表:

Student Listing

此資料網格頂部的“新建”按鈕允許新增記錄。同樣,此資料網格的操作列中也提供了編輯和刪除記錄的操作按鈕。還顯示了一個搜尋框,用於有條件地選擇記錄。

DataGrid
廣告
© . All rights reserved.