Neo*_*Neo 36 django django-templates django-models
有没有办法获取django模板中任何对象的模型名称.手动,我们可以通过在模型中定义方法或使用模板标签来尝试...但是有没有内置的方法?
Sha*_*hin 55
object.__class__.__name__或者object._meta.object_name应该给你模型类的名称.但是,这不能在模板中使用,因为属性名称以下划线开头.
没有内置的方法从模板中获取该值,因此您必须定义返回该属性的模型方法,或者对于更通用/可重用的解决方案,使用模板过滤器:
@register.filter
def to_class_name(value):
return value.__class__.__name__
Run Code Online (Sandbox Code Playgroud)
您可以在模板中使用它:
{{ obj | to_class_name }}
Run Code Online (Sandbox Code Playgroud)
您无法直接访问类名.做这样的事情:
{{ object.__class__ }}
Run Code Online (Sandbox Code Playgroud)
会导致TemplateSyntaxError: Variables and attributes may not begin with underscores.Django不允许您访问这些属性 - Python约定意味着它们是隐藏的实现细节,而不是对象API的一部分.
改为创建模板过滤器,然后您可以按如下方式使用它:
{{ object|model_name_filter }}
Run Code Online (Sandbox Code Playgroud)
创建过滤器非常简单:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
| 归档时间: |
|
| 查看次数: |
21011 次 |
| 最近记录: |