数据的获取,上一篇,已经有了!然后就是,如何进行展示的问题。
到了展示这里,又有了新的问题, 因为从数据库,取得的数据。 分为 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_tuple def __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>" % item
for 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  成功。

stark组件开发之组合搜索基本显示的更多相关文章

  1. stark组件开发之组合搜索高级显示和扩展

    上一篇,我只是做了. 默认的显示. def __iter__(self): '''默认显示. 用户可以自定制''' if isinstance(self.queryset_or_tuple, list ...

  2. stark组件开发之组合搜索页面效果和 URL

    页面效果,只是样式.这个好解决!yield 的时候. 返回几个样式出去就好了! 并且前端写上一些样式的css {% if search_group_row_list %} <div class= ...

  3. stark组件开发之组合搜索实现思路

    - 关键字搜索. 可以做到的效果是, 输入20. 后太通过 Q()  函数. 来实现.  搜索是一个大的问题点. -  要想实现组合搜索, 首先要 明确的一点是. 在我当前的页面上, 正在进行展示的是 ...

  4. stark组件开发之关键搜索

    - 模糊搜索: 在页面生成一个表单.  以get 方式, 将数据提交到.当前查看页面. 后台接收数据,然后进行筛选过滤. 着个也需要,用户自定制!   定义一个  search_list  这个值,默 ...

  5. stark组件开发之列表页面定制列

    先看一张页面展示的效果图: 看一看我的  model 表!是什么样子: 看一看数据库是什么样子: 看 页面展示图,有表头. 有数据.模型表中,每一个字段, 都指定了 verbose_name. 如何解 ...

  6. stark组件开发之列表页面应用示例

    已经解决的,自定义的扩展函数,功能.但是 不可能返回. 一个 固定的页面把!  应该是,点击那条 记录之后的编辑, 就会跳转到相应的,编辑页面.所以 这个标签的  <a href="/ ...

  7. 轮播组件/瀑布流/组合搜索/KindEditor插件

    一.企业官网 ### 瀑布流 ​ Models.Student.objects.all() #获取所有学员信息 ​ 通过div进行循环图片和字幕 ​ 1.以template模板方法实现瀑布流以列为单位 ...

  8. stark组件开发之添加按钮显示和URL

    添加: 需求: 根据用户的权限, 决定是否,有添加按钮.  通过配置进行定制,预留钩子进行权限的判断. class StartHandler(object): .................... ...

  9. stark组件开发之列表页面预留钩子方法。 可根据用户的不同,显示不同的列

    要实现,这个方法.子类中 list_diplay 这个列表, 就不能够写死.他应该是 可以根据.用户的不同,返回不同的值. 所以 就需要一个函数, 可以进行判断当前用户是谁. 并且往这个列表中添加,他 ...

随机推荐

  1. 一个WPF只能输入数字的行为。

    没啥好说的,直接上代码: public class NumberInputBehaviour : Behavior<TextBox> { protected override void O ...

  2. [Vue warn]: Duplicate keys detected: '1'. This may cause an update error

    今天遇到这个问题,遇到这个问题多数因为:key值的问题 第一种情况(key重复) <div class="name-list" v-for="(item,index ...

  3. (python基础 函数)

    关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值.使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值 必需参数:必 ...

  4. Linux下Docker快速部署LAMP

    文章目录 拿来即用 获取LAMP LAMP版本 icoty1/lamp:v1.1.0制作过程 获取ubuntu基础镜像 安装依赖 mysql apache/php phpmyadmin 使apache ...

  5. 【转】配置Exchange 2010 服务器(二)Exchange2010证书配置

    原文链接:http://blog.51cto.com/shubao/788562 (一)架设证书服务器 (二)Exchange2010申请证书 (三)证书服务器导入Exchange服务器受信任根证书 ...

  6. vue文件上传

    今天写一个文件上传的功能,开始想用element-ui的组件写,但是发现不知道怎么把文件标题和内容一起上传,所以用了经典的input框上传. 废话不多说,直接上代码. 这是表单: <el-for ...

  7. 每日一练之贪心算法(P2587)

    洛谷——P2587 [ZJOI2008]泡泡堂 两队人马进行比赛, 战斗力值各有差异, 如果一方获胜得两分,战平各得一分,失败不得分,求可取得的最佳战绩与最差战绩. 思路:1)最强的打得过最强的就直接 ...

  8. 【译】为什么BERT有3个嵌入层,它们都是如何实现的

    目录 引言 概览 Token Embeddings 作用 实现 Segment Embeddings 作用 实现 Position Embeddings 作用 实现 合成表示 结论 参考文献 本文翻译 ...

  9. install virtual enviroment on windows

    H:\>pip install virtualenv  --install virtualenvCollecting virtualenv Downloading https://files.p ...

  10. Tex和LaTeX认识

    TeX (文本排版系统) 利用TeX可以很容易地生成高质量的dvi文件,打印输出.特别是在处理复杂的数学公式时.利用诸如是LaTeX等终端软件,TeX就能够排版出精美的文本. LaTeX LaTeX( ...