stark组件开发之组合搜索基本显示
数据的获取,上一篇,已经有了!然后就是,如何进行展示的问题。
到了展示这里,又有了新的问题, 因为从数据库,取得的数据。 分为 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组件开发之组合搜索基本显示相关推荐
- 轮播组件/瀑布流/组合搜索/KindEditor插件
一.企业官网 瀑布流 Models.Student.objects.all() #获取所有学员信息 通过div进行循环图片和字幕 1.以template模板方法实现瀑布流以列为单位放置图片 ...
- stark组件开发之添加功能实现
添加功能,还是使用, form 组件来完成! 并且 完成添加之后,需要保留原搜索条件. def memory_url(self):'''用于反向生成url, 并且携带,get请求的参数,跳转到下一个 ...
- 漏刻有时数据可视化Echarts组件开发(2):根据温度阈值显示不同颜色的温度报警动画
封装函数 //构建DOM容器;function getTemp(data, id) {var myChart = echarts.init(document.getElementById(id));
- Stark 组件:快速开发神器 —— 锦上添花
Stark 组件:快速开发神器 -- 锦上添花 一.分页 二.排序 三.搜索 1.关键字搜索 2.组合搜索 四.批量操作 经过前面几个篇章,我们的 Stark 组件已经能够批量生成 URL,快速实现增 ...
- Django——stark组件
stark组件是仿照django的admin模块开发的一套组件,它的作用是在网页上对注册的数据表进行增删改查操作. 一.配置 1.创建stark应用,在settings.py中注册stark应用 st ...
- Stark 组件:快速开发神器 —— 页面显示
说道 Stark 你是不是不会想到他--Tony Stark,超级英雄钢铁侠,这也是我的偶像. 不过我们今天要开发的 Stark 组件,倒是跟他的人工智能助手 JARVIS 有些类似,是帮助我们快速开 ...
- python 全栈开发,Day116(可迭代对象,type创建动态类,偏函数,面向对象的封装,获取外键数据,组合搜索,领域驱动设计(DDD))...
昨日内容回顾 1. 三个类 ChangeList,封装列表页面需要的所有数据.StarkConfig,生成URL和视图对应关系 + 默认配置 AdminSite,用于保存 数据库类 和 处理该类的对象 ...
- ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl
第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就 ...
- Stark 组件:快速开发神器 —— 模板设计
说道 Stark 你是不是不会想到他--Tony Stark,超级英雄钢铁侠,这也是我的偶像. 不过我们今天要开发的 Stark 组件,倒是跟他的人工智能助手 JARVIS 有些类似,是帮助我们快速开 ...
最新文章
- Matlab与线性代数 -- 显示格式的设置
- Windows下Python自动补全
- 【剑指offer-Java版】42翻转单词顺序VS左旋转字符串
- ubuntu 16.04 分辨率只有800×600问题解决
- 如何从需求文档中辨认客户(一)
- es6 去掉空格_es6 filter() 数组过滤方法总结
- matplotlib常用绘图方法【转】
- android 仿手写字体下载,手写毛笔字体在线生成器-手写毛笔字软件下载v1.0 安卓版-西西软件下载...
- The POM for is missing, no dependency information available
- (8)FPGA面试技能提升篇(LTE、CPRI/eCPRI接口、LDPC)
- access考试素材_access数据库考试试题及答案.doc
- 微信群越来越多,我该如何科学地管理?
- STM32学习记录0010——TFTLCD液晶显示屏
- iphone5刷android,iphone5s怎么刷机 简单几招搞定iOS【图文教程】
- 响铃:抖音微视撕逼,但音乐短视频只有“神曲”逻辑吗?
- Gohead学习笔记
- 配置D3D8到vs2012项目中遇到的问题和解决过程
- 红米k30 android版本,红米K30配置如何 红米K30手机参数配置及图赏
- 606.根据二叉树创建字符串
- Java EE 8 Platform SDK 和Java EE 8 Web Profile SDK的区别
热门文章
- /src/applicationContext.xml
- Python基础之window常见操作
- 51nod1832(二叉树/高精度模板+dfs)
- Java Timestamp Memo
- 【AC自动机】【数据结构】【树】【Aho-Corasick automation】AC自动机理解(入门)...
- centos7自带数据库MariaDB重启和修改密码
- 同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO
- 3.1 读入一个参数
- surround360
- Wordpress中显示页面当前位置