[英]How can I distinguish lists from strings in django templates
我正在使用Django模板在Google AppEngine上開發一個項目,因此必須使用{{ aitem.Author }}
類的標簽在HTML模板中打印內容。
但是Author
可以是字符串 ,也可以是列表對象,我無法提前告知。 當作者是一個列表,我嘗試將其打印在模板上時,我得到了丑陋的結果
作者: [u'JK羅琳',u'Mary GrandPr \\ xe9']
有什么方法可以有效地處理這種情況(基本上根據字段的類型打印字段)? 我是否必須依靠自定義標簽或任何其他方式?
我認為最干凈的解決方案是向模型get_authors()
添加一個方法,該方法始終返回一個或多個作者的列表。 然后,您可以使用:
Author: {{ aitem.get_authors|join:", " }}
如果由於某種原因您只能訪問模板而不能更改模型,則可以使用如下方法:
{% if "[" == aitem.Author|pprint|slice:":1" %}
Author: {{ aitem.Author|join:", " }}
{% else %}
Author: {{ aitem.Author }}
{% endif %}
PS:使用大寫字母表示屬性名稱不是一個好習慣。
我聽從了Matthew的建議,最終實現了一個過濾器來處理列表。 我將其發布在這里,以防萬一其他人需要它。
@register.filter(name='fixlist')
def fixlist(author):
if type(author) == list:
return ', '.join(author)
else:
return author
我從{{ aitem.Author|fixlist }}
這樣的模板頁面中調用它
感謝您的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.