在我的 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
的 s 和身份验证策略——一个用于普通用户,另一个用于管理员。
为了测试这一点,我添加了两条路线,一条为:
config.add_route('admin_login_handler', '/admin/login/')
用于管理员门户登录,另一个为:
config.add_route('login_handler', '/login/')
用于一般网站登录。假设,我会看到两个不同的模板,每个视图一个,我会为管理员和普通用户提供一个单独的请求对象——self.request.admin
管理员和self.request.user
用户。
但是,当我转到 时/admin/login/
,/login/
会显示模板。基本上,我的主应用程序的路由现在都位于/
and下/admin
,并且我的管理路由被忽略了。这不是我想要的。但是,无论显示的模板/视图如何,我self.request.admin
在查看/admin
路线时都会得到我想要的对象,并且self.request.user
在我的路线上得到我的对象。/
我该如何解决这个问题,以便路由/admin/...
不会与我的/
路由“重新映射”,并且我在两个不同的路由前缀下有两个单独的应用程序?