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 管理配置的所有模型创建一个管理员。

通过管理器,已在设置阶段创建了用户。现在,可以通过http://localhost: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)

启动服务器并访问http://localhost:8080/login后登录“快速启动”应用程序,然后输入如上所示的管理员凭据。浏览器将显示一个管理页面,如下所示 -

管理员页面

该页面显示了在此应用程序中创建的所有模型。您可以单击任何模型来查看其中的条目列表 -

学生名单

该数据网格顶部的“新建”按钮允许添加记录。同样,该数据网格的操作列中也提供了用于编辑和删除记录的操作按钮。还会显示搜索框以有条件地选择记录。

数据网格