Python 无法在Django模板html中使用筛选器
我对Django项目有意见。我的情况如下:Python 无法在Django模板html中使用筛选器,python,django,django-templates,Python,Django,Django Templates,我对Django项目有意见。我的情况如下: {% for subObject in mainObject.subObjects.all %} 这很好,每个子对象都得到了很好的迭代。我现在想要的是打印对象的子集,比如: {% for subObject in mainObject.subobjects.filter(someField=someValue) %} 到目前为止,我已经找到了关于我得到的错误的解决方案: Could not parse the remainder: '(someFi
{% for subObject in mainObject.subObjects.all %}
这很好,每个子对象都得到了很好的迭代。我现在想要的是打印对象的子集,比如:
{% for subObject in mainObject.subobjects.filter(someField=someValue) %}
到目前为止,我已经找到了关于我得到的错误的解决方案:
Could not parse the remainder: '(someField=someValue)'
但没有找到一个解决方案,当使用过滤器时,线路应该如何不同。我只想调整template.html
文件,因此我不想对views.py
文件进行更改(在该文件中,所有内容都可以很好地工作)
如何做到这一点?跟随@Yuji'Tomira'Tomita的评论
不要在模板中加入太多逻辑,引用:
哲学
如果你有编程方面的背景,或者你已经习惯了
将编程代码直接混合到HTML中的语言
要记住,Django模板系统不仅仅是Python
嵌入到HTML中。这是出于设计:模板系统旨在
表示,而不是程序逻辑
最好在视图中定义查询集并传递到模板:
视图:
模板:
{% for subObject in my_objects %}
...
{% endfor %}
希望这能有所帮助。在视图中执行此操作。这是唯一的办法。不能在模板中使用python。如果你想做这样的事情,可以把jinaj2
作为一个替换模板引擎。谢谢你的快速回复。那个请求变量的东西是个很棒的主意!实际上,这组子对象已经在一个mainObject循环中,所有内容都在megalomanic mainObject中给出,但是在模型中的适当位置添加def可能会使它变得更简单。不管怎样,感谢您指点我使用代码vs html作为逻辑。@mico当然,在模板中无法进行smth是一个常见问题,但这就是事情的处理方式,模板用于表示目的,用于显示数据,而不是查询和过滤。.关注点分离(MVC)是一项伟大的发明:)
{% for subObject in my_objects %}
...
{% endfor %}