我是 Django 和 Python 初学者,在使用 Django 时遇到了问题。我希望在模板中使用过滤器来获取我需要的字符串,但是下面的结果不是我所期望的。
# filter definition
@register.filter
def to_class_name(obj):
return obj.__class__.__name__
# HTML template for UpdateView (This template will be used by multiple models.)
# object = Order()
{{ object|to_class_name }} #reulst: Order
{{ 'wms'|add:object|to_class_name }} #result: str, expect: object
我大致明白问题出在顺序上,但是好像不能加括号修改。
{{ 'wms'|add:(object|to_class_name) }} #cause SyntaxError
有什么办法可以解决这个问题吗?或者当多个模型共享一个模板时,有没有更好的方法来根据模型类来确定我需要输出的页面数据?谢谢大家。
我大致明白问题出在顺序上,但是好像不能加括号修改。
您可以使用变量。 链接
该变量一直可用,直到出现
{% endwith %}
标签。
例如。
{% with firstname="Tobias" %}
<h1>Hello {{ firstname }}, how are you?</h1>
{% endwith %}
就你而言,是这样的
{% with class_name=object|to_class_name %}
{{ 'wms'|add:class_name }}
{% endwith %}