📜  TurboGears–管理员访问权限

📅  最后修改于: 2020-10-19 03:34:16             🧑  作者: Mango


TurboGears提供了tgext.admin扩展名,该扩展名由tgext.crud和sprox支持。这个Sprox是一个软件包,用于直接从数据库模式创建Web窗口小部件。这可以用来自动创建简单的管理页面,并且是在新近快速启动的应用程序中为/ admin页面提供动力的工具箱。

默认情况下,管理员将提供对在项目模型/__init__.py中导入的所有模型的自动生成的访问。

如何创建TurboGears Admin

默认的TurboGears admin被创建为AdminController类的对象-

from tgext.admin.controller import AdminController

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

这将为所有具有默认TurboGears管理员配置的模型创建一个管理员。

通过管理器,已在设置阶段创建了一个用户。现在,可以在http:// localhost:8080 / admin处访问TurboGears 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 ,登录到“ quickstarted”应用程序,然后输入上面显示的管理器凭据。浏览器将显示一个管理页面,如下所示:

管理员面板

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

学生列表

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

数据网格