我正在向站点添加一种新类型的用户配置文件,这种新类型的用户(比如 new_type)应该无法像现有用户一样访问相同的视图。
我的问题是:如何根据用户类型使用相同的请求路径使用不同类型的视图,而无需更改现有视图代码,例如添加
if user.profile_type == 'blah':
do_this
else:
do_that
每个视图?
详细地:
我想为这两种类型的用户使用“http://mysite.com/path/”,运行不同的逻辑并返回不同的显示,而不会对现有视图产生差异(因为有很多视图需要修改)。
我正在考虑为新类型添加不同的视图组,然后覆盖 urls 逻辑以解析到相关视图的请求路径,例如:
if user is of new_type
resolve path to related_view_for_new_type
else
resolve as usual
举个简单的例子:从同一个登录 url 登录 admin 和普通用户,如果用户是 admin,则为 admin 运行相关视图并将 django admin 显示返回给她,如果是普通用户,则运行普通视图并返回 normal网站查看给她,无需重写或更改他们请求的 url。(例如/索引/)
是否可以以这种方式扩展 Django 中的 url,如果可以,或者我应该放弃重载相同的请求路径并将“/new_type/”添加到 url (http://mysite.com/new_type/path/)for新类型用户?
谢谢