Turbogears-admin-access

提供:Dev Guides
移動先:案内検索

TurboGears –管理者アクセス

TurboGearsは、tgext.crudおよびsproxを使用したtgext.admin拡張機能を提供します。 このSproxは、データベーススキーマから直接Webウィジェットを作成するために使用されるパッケージです。 これは、単純な管理ページを自動的に作成するために使用でき、新しくクイックスタートされたアプリケーションの/adminページを強化するツールキットです。

デフォルトでは、管理者はプロジェクトmodels/init.pyにインポートされたすべてのモデルへの自動生成されたアクセスを提供します。

TurboGears Adminを作成する方法

デフォルトのTurboGears管理者は、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」アプリケーションにログインし、上記のようにマネージャーの資格情報を入力します。 ブラウザには、以下に示すような管理ページが表示されます-

管理パッド

ページには、このアプリケーションで作成されたすべてのモデルが表示されます。 あなたは、その中のエントリのリストを見るために、任意のモデルをクリックすることができます-

学生リスト

このデータグリッドの上部にある「新規」ボタンを使用すると、レコードを追加できます。 同様に、レコードを編集および削除するためのアクションボタンも、このデータグリッドのアクション列に用意されています。 レコードを条件付きで選択するための検索ボックスも表示されます。

DataGrid