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