【发布时间】:2011-07-09 11:41:10
【问题描述】:
我正在向网站添加一种新类型的用户个人资料,这种新类型的用户(比如 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 显示返回给她,如果是普通用户,则运行普通视图并将正常的网站视图返回给她,而无需重写或更改他们请求的 url。 (例如 /index/)
是否可以在 Django 中以这种方式扩展 url,如果可以,或者我应该放弃重载相同的请求路径并将 '/new_type/' 添加到 url (http://mysite.com/new_type/path /)对于 new_type 用户?
谢谢
【问题讨论】:
标签: django django-views django-urls extending