房地产集团网站欣赏,服装设计公司图片,s9视频直播,江苏建设厅执业网站数据的获取#xff0c;上一篇#xff0c;已经有了#xff01;然后就是#xff0c;如何进行展示的问题。到了展示这里#xff0c;又有了新的问题#xff0c; 因为从数据库#xff0c;取得的数据。 分为 queryset 和 tuple 两种数据结构。tuple 中#xff0c;只是字符串。… 数据的获取上一篇已经有了然后就是如何进行展示的问题。到了展示这里又有了新的问题 因为从数据库取得的数据。 分为 queryset 和 tuple 两种数据结构。tuple 中只是字符串。 queryset中确实model对象。 而且 这些渲染出来后全部都是 a 标签。 是可以点击的 所以 href 超链接属性是必须要有的。 而且还有一点是默认选中。 用户选择之后 应该有一个提示我当前选择的是那个标签。 而且因为组合搜索先选中的条件不能够被刷新。 这种的 如果依靠模板做的话也可以。但是代码就过于繁琐了。所以决定这件事由后端 python 代码来实现 实现的方式还是通过。 类。 生成对象来实现在这里先抛出一个知识点 可迭代对象 这张图片展示的是不可迭代对象。 如果视图对这个对象。进行迭代。 是会报错的。 那么该怎么搞呢 定义 如果一个类中定义了 def __iter__ (self) 方法。且该方法返回一个 迭代器 iterator。 那么就称该类实例化的对象为一个可迭代对象。 那么这个对象就可以被循环。 迭代器和生成器。 生成器也是一种特殊的迭代器。 yield 这时 你会发现。 11 22 33 被打印出来了 而且这里不一定非要是 [11,22,33,] iter 函数里面。 可以随便定义。 只要返回值是一个 迭代器就可以。 so 我在模板中对这个类实例化的对象。进行 for 循环。 不就可以拿到它里面的值了吗 看例子 成功的在页面展示了。所有的数据。 注意 财务 和 CEO 虽然显示的是字符串。 是因为我在 model 的类中 定义了 __str__其实 他是一个对象。 这样我们就可以在。 这了 __iter__ 方法里面。进行判断。 当前数据的类型。 从而返回不同的数据。而模板中就只需要一个 简单的 两层循环 就能完成。 想要的工作。 so 我这里使用。 yield 生成器的方式。 来做这件事 class SearchGroupRow(object):def __init__(self, queryset_or_tuple):self.queryset_or_tuple queryset_or_tupledef __iter__(self):# if isinstance(self.queryset_or_tuple, list):# for item in self.queryset_or_tuple:# yield a href#%s/a % item[1]# else:# for item in self.queryset_or_tuple:# if isinstance(item, Model):# print(item)# yield a href#%s/a % itemfor item in self.queryset_or_tuple:if isinstance(item, tuple):yield a href#%s/a % item[1]else:yield a href#%s/a % item# 这里两种方式 都可以。完成 这个工作。 {% for row in search_group_row_list %}{% comment %}row是queryset 或者 元组{% endcomment %}div{% for item in row %}{{ item|safe }}{% endfor %}/div{% endfor %} OK 成功。 转载于:https://www.cnblogs.com/chengege/p/10744787.html