В своем приложении Pyramid я настроил составное приложение с моим основным приложением на /
и порталом администрирования на /admin
.
[composite:main]
use = egg:paste#urlmap
/ = mainapp
/admin = adminapp
[app:mainapp]
use = egg:myApp#main
[app:adminapp]
use = egg:myApp#admin
Я также добавил два отдельных метода инициализации в свой метод __init__.py
, чтобы иметь две отдельные политики add_request_method
и аутентификации — одну для обычных пользователей, а другую для администраторов.
Чтобы проверить это, я добавил два маршрута, один как:
config.add_route('admin_login_handler', '/admin/login/')
для входа в административный портал, а другой как:
config.add_route('login_handler', '/login/')
для общего входа на сайт. Предположительно, я бы увидел два разных шаблона, по одному для каждого представления, и у меня был бы отдельный объект запроса для администраторов и обычных пользователей — self.request.admin
для администраторов и self.request.user
для пользователей.
Однако, когда я перехожу к /admin/login/
, отображается шаблон /login/
. По сути, маршруты моего основного приложения теперь расположены как под /
, так и под /admin
, а мои маршруты администратора игнорируются. Это не то, чего я хотел. Но я получаю желаемый объект self.request.admin
при просмотре маршрутов /admin
, а объект self.request.user
— на маршрутах /
, независимо от отображаемого шаблона/представления.
Как я могу это исправить, чтобы маршруты с /admin/...
не «пересопоставлялись» с моими маршрутами /
, и у меня было два отдельных приложения с двумя разными префиксами маршрутов?