从 admin url 模式访问 Django 模型名称
Access Django model name from admin url pattern
鉴于url喜欢:
http://127.0.0.1:8000/admin/foo/bar/
如何使用 request.resolver_match.kwargs
从请求中访问 bar
变量?
管理员也给了什么 kwarg bar
?
尝试了不同的键,例如 class
、content_type
、slug
、model
,但其中 none 有效。
编辑:
似乎正确的 kwarg 是 model_name
,它正在返回 None
,但是。我设法使用以下方法提取模型名称:
request.resolver_match.url_name.split('_')[1]
但是不知道有没有更直接的方法
那应该只是应用标签。如果您正在点击 url,那么您就在 ModelAdmin
class 中。要从 ModelAdmin
访问应用标签(问题示例中的 foo),您可以执行 self.model._meta.app_label
,因此您不需要通过请求。
您可以使用 self.model
在 ModelAdmin
中访问模型(示例中的栏)。
模型名称不会直接出现在 request
对象中,除非您将它放在那里。您可以从 request.path.strip('/').split('/')[-1]
或 request.resolver_match.url_name.split('_')[1]
中获取
鉴于url喜欢:
http://127.0.0.1:8000/admin/foo/bar/
如何使用 request.resolver_match.kwargs
从请求中访问 bar
变量?
管理员也给了什么 kwarg bar
?
尝试了不同的键,例如 class
、content_type
、slug
、model
,但其中 none 有效。
编辑:
似乎正确的 kwarg 是 model_name
,它正在返回 None
,但是。我设法使用以下方法提取模型名称:
request.resolver_match.url_name.split('_')[1]
但是不知道有没有更直接的方法
那应该只是应用标签。如果您正在点击 url,那么您就在 ModelAdmin
class 中。要从 ModelAdmin
访问应用标签(问题示例中的 foo),您可以执行 self.model._meta.app_label
,因此您不需要通过请求。
您可以使用 self.model
在 ModelAdmin
中访问模型(示例中的栏)。
模型名称不会直接出现在 request
对象中,除非您将它放在那里。您可以从 request.path.strip('/').split('/')[-1]
或 request.resolver_match.url_name.split('_')[1]