TurboGears - доступ администратора
TurboGears предоставляет расширение tgext.admin, которое поддерживается tgext.crud и sprox. Этот Sprox - это пакет, используемый для создания веб-виджетов непосредственно из схемы базы данных. Это может использоваться для автоматического создания простых страниц администрирования и является набором инструментов для страницы / admin в недавно запущенных приложениях.
По умолчанию администратор предоставит автоматически сгенерированный доступ ко всем моделям, импортированным в ваш проект models / __ init__.py.
Как создать администратора TurboGears
Администратор 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)
Войдите в приложение для быстрого запуска после запуска сервера и посетив http://localhost:8080/loginа затем введите учетные данные менеджера, как показано выше. Браузер отобразит страницу администратора, подобную показанной ниже -
На странице показаны все модели, созданные в этом приложении. Вы можете щелкнуть любую модель, чтобы увидеть список записей в ней -
Кнопка «Новый» в верхней части этой сетки данных позволяет добавить запись. Точно так же кнопки действий для редактирования и удаления записи также представлены в столбце действий этой таблицы данных. Также отображается поле поиска для условного выбора записей.