【问题标题】:django concat string with comma in template模板中带有逗号的django concat字符串
【发布时间】:2015-12-14 18:54:13
【问题描述】:

我是 django 的新手。如何在 django 模板的 for 循环中连接字符串

{% for lead in project.leaders %}
    {% if forloop.counter == 1 %}
        {% lead_member = lead.0 %}
     {% else %}
        {% lead_member = ','.lead.0 %}
     {% endif %}
{{ lead_member }}
{% endfor %}

最后我的lead_member 应该是test1,test2,test3....

现在发生了什么(我当前的代码)

 {% for lead in project.leaders %}
    {{ lead.0}}
 {% endfor %}

输出是test1test2test3....,但我想和test1,test2,test3....一样

【问题讨论】:

  • 这在什么语言中有意义?您不能在 Django 模板中分配,但即使可以,重复分配给同一个变量也不会创建列表。而且你在任何地方都没有逗号,这应该是问题的重点。
  • 现在检查我的问题已修改。这是演示代码。我想实现上一行中提到的目标
  • 为什么需要连接?模板只是渲染一个 html 页面,所以输出是一样的
  • @Sayse 再次修改问题。请立即查看
  • @Sayse 如果只有一个数据,您的解决方案将连接额外的comma。有点困惑,无法理解我的问题中不清楚的地方?我只想在每个数据后加一个逗号

标签: python django


【解决方案1】:

试试这个。它有效

{% for lead in project.leaders %}
    {{ lead.0 }}{% if not forloop.last %}, {% endif %}
{% endfor %}

没有必要分配任何东西,也不需要使用分配标签来实现那种复杂性。为了让你的模板保持简单,你总是可以在你的视图中这样做,甚至在模型级别:

# don't step on the `join` built-in
from django.template.defaultfilters import join as join_filter

class Project(models.Model):

    @property
    def leaders(self):
        return join_filter(self.objects.values_list('some_field', flat=True), ', ')

那么你在模板中要做的就是:

{{ project.leaders }}

【讨论】:

  • 谢谢。在views 中试过没有用。但是第一个解决方案奏效了。
  • 我使用dict(zip(k,a)) 制作了一个复杂的数据结构(字典)。如果你愿意,我可以告诉你
  • 好的,请给我发送 Gist 或其他内容的链接
  • gist.github.com/rejoan/d35e11adc0886ac3ae51 我需要用逗号分隔usernamelm 以及nm。问题已经解决,无需为此努力
  • 亲爱的主。我不知道那个要点是怎么回事:)
【解决方案2】:

很难理解你的问题,但我希望我做到了。有很多相关问题如String-concatination, How to concatenate in django

可以创建第一个字符串,每次迭代用逗号和新字符串连接它。在渲染之前,您还可以在服务器端制作类似','.join(list_of_strings) 的东西。您也可以通过{{ list|join:", " }} 加入您的模板列表。

【讨论】:

    猜你喜欢
    • 2019-04-16
    • 2014-12-18
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    相关资源
    最近更新 更多