在元素列表

时间:2015-09-23 11:34:36

标签: html django html5 django-templates

我有一个事件列表(带有链接),我希望以逗号分隔显示,如

event1,event2,event3

我试过了the solution here,但没有为我工作。

以下是代码:

<p> 

  {% for element in event.getelement.all() %}

       <a href="{{ build_absolute_url(url('main:home_getlink',link.uri)) }}">
        {{ element }} </a> 
     {% endfor %} 
</p>

2 个答案:

答案 0 :(得分:1)

执行:

<p> 
  {% for element in event.getelement.all %}
      <a href="{{ build_absolute_url(url('main:home_getlink',link.uri)) }}">
        {{ element }}
      </a>{% if not forloop.last %}, {% endif %}
  {% endfor %} 
</p>

此外,href的内容是什么?您是否使用命名路由,只需使用{% url [route-name] [params] %}标记?

答案 1 :(得分:0)

这个不应该是函数调用,因为它在template内。改变如下,

{% for element in event.getelement.all() %}

{% for element in event.getelement.all %}

休息时,您发布的解决方案链接应该在此之后工作。

修改

如果你这样做,

{{ event.getelement.all|join:", " }}

所以这可能产生类似的结果,

GetElement object, GetElement object, GetElement object

获取您必须添加属性的特定属性的值。像这样的东西,

{% for e in event.getelement.all %}
    {{ e.<attr_name> }},
{% endfor %}

这可能产生类似的东西,

event1, event2, event3,

当然,是最佳解决方案,因为在使用任何框架时,这不是正确的做法。

最佳解决方案:

应该遵循的是,执行views中的每个逻辑并将data的干净(纯)形式发送到templates。我的意思是发送listsdictionariesobjectstuples应该发送到templates。因此,创建list所有事件并通过templates发送context

注意:以下示例均基于假设。

查看:

def xyz(request):
    event = Event.objects.get(name='xyz')
    context = {
       'event_elements': [e.name for e in event.getelement.all()]
    }

    return render(request, 'xyz.html', context)

<强>模板:

{{ event_elements|join:", " }}

现在这将绝对有用