我有一个事件列表(带有链接),我希望以逗号分隔显示,如
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>
答案 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
。我的意思是发送lists
,dictionaries
,objects
,tuples
应该发送到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:", " }}
现在这将绝对有用。