【问题标题】:Django array or list output?Django数组或列表输出?
【发布时间】:2011-01-20 07:59:37
【问题描述】:

我正在提取一组图片网址及其各自的标题。我试过创建一个哈希或关联数组,但数据似乎被覆盖了,所以我只得到了数组中的最后一项。

例如;

thumbnail_list = []
for file in media:
    thumbnail_list['url'] = file.url
    thumbnail_list['title'] = file.title

我什至尝试过创建两个列表并将它们放在一个更大的列表中。

thumbnail_list.append('foo')
thumbnail_urls.append('bar')
all_thumbs = [thumbnail_list], [thumbnail_urls]

我正在尝试从这些数据中创建一个链接:

<a href="image-url">image title</a>

我不断接近,但最终在我的 django 模板中循环了太多数据或所有数据。

想法?

编辑:也许 zip() 是我需要的?

questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
    print 'What is your {0}?  It is {1}.'.format(q, a)

【问题讨论】:

    标签: python django hash associative-array


    【解决方案1】:

    您需要一个dict,这是 Python 的关联数据结构,而您正在创建一个列表。

    但我不确定我是否理解您的问题。为什么不直接将您的 media 集合传递到模板中并像这样迭代:

    {% for file in media %}
        <a href="{{ file.url }}">{{ file.title }}</a>
    {% endfor %}
    

    编辑

    根据您的评论,我现在推测您正在寻找这样的东西:

    thumbnail_list = []
    for file in media:
        file_info = {}
        file_info['url'] = file.url
        file_info['title'] = file.title
        thumbnail_list.append(file_info)
    
    {% for file in thumbnail_list %}
        <a href="{{ file.url }}">{{ file.title }}</a>
    {% endfor %}
    

    您可以创建一个列表,然后在处理完 URL、标题或其他内容后,为每个文件将字典附加到该列表中。

    或者,您可以创建自己的类来更好地封装它,以防您需要应用其他逻辑:

    class FileInfo(object):
        def __init__(self, file):
            self.url = file.url # do whatever
            self.title = file.title # do whatever
    
    thumbnail_list = []
    for file in media:
        thumbnail_list.append(FileInfo(file))
    

    【讨论】:

    • 嗨,乔 - 我需要对 URL 进行字符串替换,并且不输出任何没有标题的图像。所以我只能在 python 端这样做,对吗?
    • 哎呀!我应该早点看到这个。太感谢了!该类 FileInfo 是否必须返回任何内容,或者我可以按原样调用它吗?例如。;返回自我;
    • __init__ 方法是 Python 构造函数,它不需要返回任何内容,因为它的返回值隐含为新对象。 file_info = FileInfo(...)
    猜你喜欢
    • 1970-01-01
    • 2022-06-12
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2021-07-18
    相关资源
    最近更新 更多