当用户在 Django 管理员中时如何获取当前应用程序?
How to get current app when user is in Django admin?
我需要从 django admin 中获取当前请求来自哪个管理页面(应用程序)。
目前 request.resolver_match.app_name
只有 returns "admin" 这不是我想要的。
我注意到我的应用程序名称在 'view_name' 和 'url_name' 中,但是解析这些变量以访问当前应用程序名称是否可靠?
Django 1.11 LTS
编辑:例如,当用户使用上述方法进入我的课程应用程序的管理页面时,我仍然只在我的请求中得到 'admin',应该是 'course' 而不是 'admin' .我的最终目标是根据用户组在管理页面中隐藏我的一些应用程序模型字段。
谢谢
您可以简单地通过跟踪 requested.user
即谁当前登录来做到这一点。
像这样
if(requested.user=='admin'):
(show all fields)
else:
(show mentioned fields)
此处您根据 currently logged in user
限制对您的模型字段的访问
从 ModelAdmin
您可以通过 self.model
访问该模型。在 ModelAdmin
方法中,您可以使用 self.model._meta.app_label
.
获取应用程序名称
我需要从模板而不是 ModelAdmin
访问它,self.model._meta
作为 opts
传递给上下文。因此,您可以通过 {% if opts.app_label == "some_app" %}
.
访问它
我需要从 django admin 中获取当前请求来自哪个管理页面(应用程序)。
目前 request.resolver_match.app_name
只有 returns "admin" 这不是我想要的。
我注意到我的应用程序名称在 'view_name' 和 'url_name' 中,但是解析这些变量以访问当前应用程序名称是否可靠?
Django 1.11 LTS
编辑:例如,当用户使用上述方法进入我的课程应用程序的管理页面时,我仍然只在我的请求中得到 'admin',应该是 'course' 而不是 'admin' .我的最终目标是根据用户组在管理页面中隐藏我的一些应用程序模型字段。
谢谢
您可以简单地通过跟踪 requested.user
即谁当前登录来做到这一点。
像这样
if(requested.user=='admin'):
(show all fields)
else:
(show mentioned fields)
此处您根据 currently logged in user
从 ModelAdmin
您可以通过 self.model
访问该模型。在 ModelAdmin
方法中,您可以使用 self.model._meta.app_label
.
我需要从模板而不是 ModelAdmin
访问它,self.model._meta
作为 opts
传递给上下文。因此,您可以通过 {% if opts.app_label == "some_app" %}
.