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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原生支付url参数错误_小程序支付

下载微信JSAPI支付的 SDK : https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php.zip &#xff1b;解压后放在extend 文件夹下&#xff0c;命名为wepay下载你的商户证书&#xff0c;放在extend/wepay/cert/ 文件夹下面。自行将 extend/wepay/example/WxPay.Config.p…

枚举转中文,通过反射方法与描述的方式获取

示例&#xff1a; 有人为了显示中文&#xff0c;这样定义枚举吗&#xff1f; publicenum TimeOfDay { 上午, 下午, 晚上 }; 这样定义&#xff0c;很别扭&#xff0c;特别是在使用的时候&#xff0c; 比如&#xff0c;this.Time TimeOfDay.上午; 而…

Powershell-创建Module

1.找到默认module路径&#xff0c;ISE启动时自动加载默认领下的Module代码。 $env:PSModulePath 2.在其中一个默认路径下创建个文件夹&#xff0c;在文件夹下创建一个.psm1后缀文件&#xff0c;注意文件夹名字与文件名一样。 3.在.psm1文件中写入函数代码。 4.重启ISE自动加载m…

preserve log什么意思_一些有意思的JavaScript代码片段

Javascript是一门很灵活的语言&#xff0c;我们可以使用它动态地实现各种各样的功能。但是动态带来便利的同时&#xff0c;也存在一些令人费解的行为&#xff0c;稍不注意就会进入误区一个接着一个的坑。虽然我使用JavaScript的时间还不算长&#xff0c;也是遇到了一些有意思的…

冲刺第一天

任务板 未开始 进行中已完成 刘晓杰&#xff1a;找回密码界面 页面风格优化 刘晓杰&#xff1a;滑动欢迎界面/加载界面 预计时间&#xff1a;5.5h 冯晨&#xff1a;找回密码功能 发布动态界面 冯晨&#xff…

苹果内存取证工具volafox

2019独角兽企业重金招聘Python工程师标准>>> 苹果内存取证工具volafox volafox是一款针对苹果内存取证的专用工具。该工具使用Python语言编写。该工具内置了overlay data数据&#xff0c;用户可以直接分析苹果10.6-10.11的各种内存镜像文件。该工具提供28个子命令&a…

Flutter实战视频-移动电商-45.详细页_说明区域UI编写

45.详细页_说明区域UI编写 pages/details_page/details_expain.dart 详情页面引用组件 效果展示&#xff1a; 最终代码&#xff1a; import package:flutter/material.dart; import package:flutter_screenutil/flutter_screenutil.dart;class DetailsExplain extends Stateles…

win10java怎么运行_win10系统电脑怎样才可以运行Java开发

展开全部安装jdk&#xff0c;jdk下载地址&#xff1a;网页链接 根据电脑系统选择对应版本。32/64安装时候&#xff0c;安装路径可以默认&#xff0c;也可以自己指定。我个人喜欢安装到非系统盘&#xff0c;比如D盘。jdk安装后&#xff0c;会弹出jre安装界面&#xff0c;路径同样…

HTTP服务器的本质:tinyhttpd源码分析及拓展

已经有一个月没有更新博客了&#xff0c;一方面是因为平时太忙了&#xff0c;另一方面是想积攒一些干货进行分享。最近主要是做了一些开源项目的源码分析工作&#xff0c;有c项目也有python项目&#xff0c;想提升一下内功&#xff0c;今天分享一下tinyhttpd源码分析的成果。ti…

I/O模型系列之四:两种高性能IO设计模式 Reactor 和 Proactor

不同的操作系统实现的io策略可能不一样&#xff0c;即使是同一个操作系统也可能存在多重io策略&#xff0c;常见如linux上的select&#xff0c;poll&#xff0c;epoll&#xff0c;面对这么多不同类型的io接口&#xff0c;这里需要一层抽象api来完成&#xff0c;所以就演变出来两…

【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?...

简介 Floyd-Warshall算法&#xff08;Floyd-Warshall algorithm&#xff09;&#xff0c;是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法&#xff0c;与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特…

java object类的常用子类_Java中Object类常用的12个方法,你用过几个?

前言Java 中的 Object 方法在面试中是一个非常高频的点&#xff0c;毕竟 Object 是所有类的“老祖宗”。Java 中所有的类都有一个共同的祖先 Object 类&#xff0c;子类都会继承所有 Object 类中的 public 方法。先看下 Object 的类结构(快捷键&#xff1a;alt7)&#xff1a;1.…

javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

一、ServletJSPJavaBean开发模式(MVC)介绍 ServletJSPJavaBean模式(MVC)适合开发复杂的web应用&#xff0c;在这种模式下&#xff0c;servlet负责处理用户请求&#xff0c;jsp负责数据显示&#xff0c;javabean负责封装数据。 ServletJSPJavaBean模式程序各个模块之间层次清晰&…

Log4j配置详解

来自: http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的&#xff0c;它可接keyvalue格式的设置或xml格式的设置信息。通过配置&#xff0c;可以创建出Log4J的运行环境。1. 配置文件 …

java swing 串口_ComTest 接收串口数据,并显示在文本框内,通过JavaSwing实现 Develop 265万源代码下载- www.pudn.com...

文件名称: ComTest下载 收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 3157 KB上传时间: 2016-09-21下载次数: 0提 供 者: 韩坤详细说明&#xff1a;接收串口数据&#xff0c;并显示在文本框内&#xff0c;通过JavaSwing实现-Receive serial data, and displayed in the t…

SQL大圣之路笔记——PowerDesigner之新建table、view、proc

1. 新建table、view、proc 转载于:https://www.cnblogs.com/allenzhang/p/6305564.html

P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

对于一个牛&#xff0c;它存在两种状态&#xff1a;1.处于联通分量 2.不处于联通分量。对于处于联通分量的牛&#xff0c;求出联通分量的大小&#xff1b;对于不处于联通分量的牛&#xff0c;求出其距离联通分量的路程联通分量大小。 不同的联通分量&#xff0c;染上不同的颜色…

ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

开发工具&#xff1a;VS2015(2012以上)SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下&#xff1a; 日程管理 http://www.cnblogs.com/ymnets/p/7094914.html 任务调度系统界面 http://www.cnblogs.com/ymnets/p/5065154.h…

【FRDM-K64F学习笔记】使用ARM mbed和Keil MDK下载你的第一个程序

FRDM-K64F开发平台采用MK64FN1M0VLL12微控制器。该控制器包含一个带有浮点单元的ARM Cortex-M4内核。其最高工作频率为120MHz&#xff0c;具有256KB的RAM、1MB闪存以及许多其他外设。它非常适合大多数可以采用以太网、SD卡存储以及板载模拟-数字转换器的IoT应用。但是&#xff…

php 实时更新内容_亿级视频内容如何实时更新?优酷视频背后的技术揭秘

简介&#xff1a; 优酷视频内容数据天然呈现巨大的网络结构&#xff0c;各类数据实体连接形成了数十亿顶点和百亿条边的数据量&#xff0c;面对巨大的数据量&#xff0c;传统关系型数据库往往难以处理和管理&#xff0c;图数据结构更加贴合优酷的业务场景&#xff0c;图组织使用…