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

stark组件开发之组合搜索基本显示相关推荐

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

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

  2. stark组件开发之添加功能实现

    添加功能,还是使用, form 组件来完成!  并且 完成添加之后,需要保留原搜索条件. def memory_url(self):'''用于反向生成url, 并且携带,get请求的参数,跳转到下一个 ...

  3. 漏刻有时数据可视化Echarts组件开发(2):根据温度阈值显示不同颜色的温度报警动画

    封装函数 //构建DOM容器;function getTemp(data, id) {var myChart = echarts.init(document.getElementById(id));

  4. Stark 组件:快速开发神器 —— 锦上添花

    Stark 组件:快速开发神器 -- 锦上添花 一.分页 二.排序 三.搜索 1.关键字搜索 2.组合搜索 四.批量操作 经过前面几个篇章,我们的 Stark 组件已经能够批量生成 URL,快速实现增 ...

  5. Django——stark组件

    stark组件是仿照django的admin模块开发的一套组件,它的作用是在网页上对注册的数据表进行增删改查操作. 一.配置 1.创建stark应用,在settings.py中注册stark应用 st ...

  6. Stark 组件:快速开发神器 —— 页面显示

    说道 Stark 你是不是不会想到他--Tony Stark,超级英雄钢铁侠,这也是我的偶像. 不过我们今天要开发的 Stark 组件,倒是跟他的人工智能助手 JARVIS 有些类似,是帮助我们快速开 ...

  7. python 全栈开发,Day116(可迭代对象,type创建动态类,偏函数,面向对象的封装,获取外键数据,组合搜索,领域驱动设计(DDD))...

    昨日内容回顾 1. 三个类 ChangeList,封装列表页面需要的所有数据.StarkConfig,生成URL和视图对应关系 + 默认配置 AdminSite,用于保存 数据库类 和 处理该类的对象 ...

  8. ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl

    第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就 ...

  9. Stark 组件:快速开发神器 —— 模板设计

    说道 Stark 你是不是不会想到他--Tony Stark,超级英雄钢铁侠,这也是我的偶像. 不过我们今天要开发的 Stark 组件,倒是跟他的人工智能助手 JARVIS 有些类似,是帮助我们快速开 ...

最新文章

  1. Matlab与线性代数 -- 显示格式的设置
  2. Windows下Python自动补全
  3. 【剑指offer-Java版】42翻转单词顺序VS左旋转字符串
  4. ubuntu 16.04 分辨率只有800×600问题解决
  5. 如何从需求文档中辨认客户(一)
  6. es6 去掉空格_es6 filter() 数组过滤方法总结
  7. matplotlib常用绘图方法【转】
  8. android 仿手写字体下载,手写毛笔字体在线生成器-手写毛笔字软件下载v1.0 安卓版-西西软件下载...
  9. The POM for is missing, no dependency information available
  10. (8)FPGA面试技能提升篇(LTE、CPRI/eCPRI接口、LDPC)
  11. access考试素材_access数据库考试试题及答案.doc
  12. 微信群越来越多,我该如何科学地管理?
  13. STM32学习记录0010——TFTLCD液晶显示屏
  14. iphone5刷android,iphone5s怎么刷机 简单几招搞定iOS【图文教程】
  15. 响铃:抖音微视撕逼,但音乐短视频只有“神曲”逻辑吗?
  16. Gohead学习笔记
  17. 配置D3D8到vs2012项目中遇到的问题和解决过程
  18. 红米k30 android版本,红米K30配置如何 红米K30手机参数配置及图赏
  19. 606.根据二叉树创建字符串
  20. Java EE 8 Platform SDK 和Java EE 8 Web Profile SDK的区别

热门文章

  1. /src/applicationContext.xml
  2. Python基础之window常见操作
  3. 51nod1832(二叉树/高精度模板+dfs)
  4. Java Timestamp Memo
  5. 【AC自动机】【数据结构】【树】【Aho-Corasick automation】AC自动机理解(入门)...
  6. centos7自带数据库MariaDB重启和修改密码
  7. 同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO
  8. 3.1 读入一个参数
  9. surround360
  10. Wordpress中显示页面当前位置