重写admin视图 - Django
我正在使用 Django 1.3
和 python 2.7
,并且在使用 Django 的管理应用。我的需求是,当一个 超级用户
登录时,应该显示默认的 admin/index.html 页面,上面有所有模型的信息。但是,如果其他用户(不是超级用户)登录时,就应该显示一个完全不同的模板,比如 'abc.html'。我该怎么做才能实现这个功能呢?我想我需要重写一些管理视图,但我不知道该怎么做。
请帮帮我。如果你需要更多信息,请留言 :)
3 个回答
0
你需要修改一下管理员网站的界面。Django的文档里有详细的说明。如果你遇到任何错误,可以查看这个链接:https://docs.djangoproject.com/en/1.3/ref/contrib/admin/,如果还有问题,请把你的代码细节发回来。
3
我会创建一个中间件,用来检查用户是不是超级用户。如果用户不是超级用户,就把他/她重定向到一个自定义的管理页面,而不是默认的那个页面。
class SuperUserMiddleware(object):
def process_request(self, request):
user = request.session.user
if not user.is_superuser:
return HttpResponseRedirect(NON_SUPERUSER_URL)
...
0
你可以创建一个修改过的 AdminSite 类,这个类里有额外的权限规则。
class SuperUserAdminSite( AdminSite ):
def has_permission(self, request):
return request.user.is_active and request.user.is_staff and request.user. is_superuser
现在你可以创建两个 AdminSite 对象,一个给普通用户用,一个给超级用户用。
你可以在网址中为这两个管理网站设置两个不同的路径。
超级用户可以使用这两个路径。
而普通用户只能使用普通用户的那个路径。
https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#adminsite-objects