Учебники

TurboGears — доступ администратора

TurboGears предоставляет расширение tgext.admin, которое работает на tgext.crud и sprox. Этот Sprox представляет собой пакет, используемый для создания веб-виджетов непосредственно из схемы базы данных. Это может быть использовано для автоматического создания простых страниц администрирования и является инструментарием для включения страницы / admin в недавно запущенные приложения.

По умолчанию администратор предоставляет автоматически сгенерированный доступ ко всем моделям, импортированным в модели вашего проекта / __ init__.py.

Как создать TurboGears Admin

Администратор TurboGears по умолчанию создается как объект класса AdminController —

from tgext.admin.controller import AdminController

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

Это создает администратора для всех моделей с конфигурацией администратора TurboGears по умолчанию.

Через менеджера пользователь был создан на этапе установки. Теперь можно получить доступ к администратору TurboGears по адресу http: // localhost: 8080 / 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)

Войдите в приложение «quickstarted» после запуска сервера и перейдите по адресу http: // localhost: 8080 / login, а затем введите учетные данные менеджера, как показано выше. Браузер отобразит страницу администратора, как показано ниже —

Админ паде

На странице отображаются все модели, созданные в этом приложении. Вы можете нажать на любую модель, чтобы увидеть список записей в ней —

Студенческий листинг

Кнопка «Создать» в верхней части этой сетки данных позволяет добавить запись. Аналогично, кнопки действий для редактирования и удаления записи также предусмотрены в столбце действий этой таблицы данных. Также отображается окно поиска для условного выбора записей.