【问题标题】:Django Call method in template and use the return (,,)模板中的 Django 调用方法并使用返回 (,,)
【发布时间】:2016-11-17 11:02:39
【问题描述】:

各位, 我从 Django 开始,我想要一个对象返回其统计信息并直接在 HTML 模板中显示它们。 为此,我的对象方法。 get_stat(self) 返回一个列表和 3 个字典。 我如何使用这些返回的数据?我可以在方法调用 {{}} 中看到数组我不能在 {% %} 中使用它们并在 Javasript 中使用它们来制作图表。 如何取回他的数组以供使用?

提前感谢您的澄清

我的模特:

class Adviser(models.Model):    
    TYPES_CHOICES = (('PRF', _('Professor')),
       ('MGR', _('Manager')),)


   def get_stat(self):
       some queries to create tables

       return (list_stat1,tab_stat1,tab_stat2,tab_stat3)

在我的模板 HTML 中:

{% for advisors in advisors %} {{顾问}} {{ 顾问类型 }} {% advisor.get_stat as advisor_list_stat1 advisor_tab_stat1 advisor_tab_stat2 advisor_tab_stat3 %} {% endfor %}

有了这个:

{{ advisor.get_stat }}

我有我的标签: ([2, 1, 0, 1, 0], {'Cours xy': 1}, {}, {'cours xx': 5})

【问题讨论】:

标签: python django templates


【解决方案1】:

get_stat(self) 应该返回一个字典 {"list_1":[2, 1, 0, 1, 0], "dict_1":{'Cours xy': 1}} 然后你可以这样做:

{% for adviser in advisers %}
   {% with ad_stat=adviser.get_stat %}
      {{ad_stat.list_1}}
      {{ad_stat.dict_1}}
      ....
   {% endfor %}  
{% endfor %}

这就是你要找的吗?

【讨论】:

  • 是的,这正是我所需要的。但现在我得到错误 Exception Type: TemplateSyntaxError Exception Value: 'with' expected at least one variable assignment
【解决方案2】:

将您的方法get_stat 定义为属性以在模板中调用它:

class Adviser(models.Model):    
    TYPES_CHOICES = (('PRF', _('Professor')),
       ('MGR', _('Manager')),)


    @property
    def get_stat(self):
        some queries to create tables

        return (list_stat1,tab_stat1,tab_stat2,tab_stat3)

现在你可以在模板中调用它了:

{% for adviser in advisers %}
    {{ adviser.get_stat }}
{% endfor %}

【讨论】:

  • 嗨,我添加了@property,但我的方法有效,因为它已经绕过了我的桌子。示例表 ([2, 1, 0, 1, 0], { 'xy Course': 1}, {}, {'course xx': 5})
  • 嗨,我的目标是恢复 4 个变量以利用它们,模板标签如何帮助我?
  • @user2274064 在这种情况下你可以简单地一一调用:{{ adviser.get_stat.0 }} -> [2, 1, 0, 1, 0], {{ adviser.get_stat.1 }} -> {'Cours xy': 1}, ...
  • 我看到的唯一问题是该函数应该被调用 4 次(在同一个 DB 上查询 4 ​​次)以获得 4 个表...
猜你喜欢
  • 1970-01-01
  • 2014-04-06
  • 2021-02-28
  • 2014-06-07
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2015-07-21
相关资源
最近更新 更多