我需要从Django管理中获取当前请求来自哪个管理页面(应用)。
当前request.resolver_match.app_name
仅返回“ admin”,这不是我想要的。
我已经注意到我的应用程序名称位于“ view_name”和“ url_name”中,但是解析这些变量以访问当前应用程序名称是否可靠?
Django 1.11 LTS
编辑:例如,当用户使用上述方法进入我的课程应用的管理页面时,我在请求中仍然仅获得“管理员”,应该是“课程”而不是“管理员”。我的最终目标是根据用户组将某些应用程序模型字段隐藏在管理页面中。
谢谢
答案 0 :(得分:0)
您只需跟踪requested.user
(即当前登录的人)即可完成此操作。
像这样
if(requested.user=='admin'):
(show all fields)
else:
(show mentioned fields)
在这里,您基于currently logged in user
答案 1 :(得分:0)
您可以通过ModelAdmin
从self.model
访问模型。因此,在ModelAdmin
方法中,您可以使用self.model._meta.app_label
获取应用名称。
我需要从模板而不是ModelAdmin
访问它,self.model._meta
作为opts
传递到上下文。因此,您可以通过{% if opts.app_label == "some_app" %}
访问它。