TurboGears - Quyền truy cập của quản trị viên
TurboGears cung cấp phần mở rộng tgext.admin, được hỗ trợ bởi tgext.crud và gerx. Sprox này là một gói được sử dụng để tạo các widget web trực tiếp từ lược đồ cơ sở dữ liệu. Điều này có thể được sử dụng để tự động tạo các trang quản trị đơn giản và là bộ công cụ cung cấp năng lượng cho trang / admin trong các ứng dụng mới khởi động nhanh.
Theo mặc định, quản trị viên sẽ cung cấp quyền truy cập được tạo tự động vào tất cả các mô hình được nhập trong các mô hình dự án / __ init__.py của bạn.
Cách tạo quản trị viên TurboGears
Quản trị viên TurboGears mặc định được tạo như một đối tượng của lớp AdminController -
from tgext.admin.controller import AdminController
class RootController(BaseController):
admin = AdminController(model, DBSession, config_type = TGAdminConfig)
Thao tác này tạo quản trị viên cho tất cả các kiểu máy có cấu hình quản trị viên TurboGears mặc định.
Thông qua trình quản lý, một người dùng đã được tạo trong giai đoạn thiết lập. Bây giờ, có thể truy cập vào Quản trị viên TurboGears tạihttp://localhost:8080/adminLần đầu tiên trang này được truy cập, nó sẽ yêu cầu xác thực. Bạn chỉ cần cung cấp tên người dùng và mật khẩu của người dùng mà lệnh setup-app đã tạo cho chúng tôi -
Username: manager
Password: managepass
Để đăng nhập vào dự án khởi động nhanh, hãy thêm các chức năng sau vào lớp 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)
Đăng nhập vào ứng dụng 'khởi động nhanh' sau khi khởi động máy chủ và bằng cách truy cập http://localhost:8080/loginvà sau đó nhập thông tin đăng nhập của người quản lý như hiển thị ở trên. Trình duyệt sẽ hiển thị một trang quản trị như hình dưới đây -
Trang hiển thị tất cả các mô hình được tạo trong ứng dụng này. Bạn có thể nhấp vào bất kỳ mô hình nào để xem danh sách các mục nhập trong đó -
Nút 'Mới' ở trên cùng của lưới dữ liệu này cho phép thêm bản ghi. Tương tự, các nút hành động để chỉnh sửa và xóa bản ghi cũng được cung cấp trong cột hành động của lưới dữ liệu này. Một hộp tìm kiếm cũng được hiển thị để chọn các bản ghi có điều kiện.