ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

自己写一个在线学习网站记录之按照不同的筛选条件筛选符合条件的数据并显示

2019-10-22 10:07:47  阅读:323  来源: 互联网

标签:city 在线 lib mymooc home 筛选 peter id 符合条件


筛选每个城市的培训机构

在前端界面上按照城市的id来显示城市的信息。

123
{% for city in all_cities %}    <a href="?city={{ city.id }}"><span class="">{{ city.name }}</span></a>{% endfor %}

在views(视图函数)中我们根据条件进一步筛选。

这里有一个小常识。比如我们在在定义培训机构的model的时候,有一个外键,我们虽然传入的字段名称是city,但是在数据库中实际存储的字段名称是city_id, 这样就给我们使用数据带来极大的方便。

12345
# 取出筛选的城市city_id = request.GET.get('city', '')if city_id:    all_orgs = all_orgs.filter(city_id)

这里刚刚出现了报错,说参数错误:

12345678910111213141516171819202122
Request Method:	GETRequest URL:	http://localhost:8000/org_list/?city=1Django Version:	1.9Exception Type:	ValueErrorException Value:	not enough values to unpack (expected 2, got 1)Exception Location:	/home/peter/mymooc/mymoocvenv/lib/python3.5/site-packages/django/db/models/sql/query.py in build_filter, line 1146Python Executable:	/home/peter/mymooc/mymoocvenv/bin/pythonPython Version:	3.5.2Python Path:	['/home/peter/mymooc/apps', '/home/peter/mymooc', '/root/.venvburrito/lib/python2.7/site-packages', '/root/.venvburrito/lib/python2.7/site-packages/setuptools-28.8.0-py2.7.egg', '/root/.venvburrito/lib/python2.7/site-packages/pip-9.0.1-py2.7.egg', '/home/peter/mymooc/mymoocvenv/lib/python35.zip', '/home/peter/mymooc/mymoocvenv/lib/python3.5', '/home/peter/mymooc/mymoocvenv/lib/python3.5/plat-x86_64-linux-gnu', '/home/peter/mymooc/mymoocvenv/lib/python3.5/lib-dynload', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/home/peter/mymooc/mymoocvenv/lib/python3.5/site-packages']

修改如下:

12
if city_id:    all_orgs = all_orgs.filter(city_id=int(city_id))

ok,因为city_id在数据库中也是以整形数的形式存储的,也就是int类型的。而从前端页面传过来的的city_id是字符串类型的,所以需要强制转换成整形数,才能正确的找到要筛选的数据。

附上filter的源码:

123456
def filter(self, *args, **kwargs):    """    Returns a new QuerySet instance with the args ANDed to the existing    set.    """    return self._filter_or_exclude(False, *args, **kwargs)

我们继续做选中状态的处理,如果当前的city的id和后端传过来的city的ID一样,那么就把当前的city设置成选中的状态。

这里总结的点就是每一个链接都要有一个合理的值,这个值可以是后台传过来的东西。

1234567891011
<h2>机构类别</h2>	<div class="cont">        <a href="?city={{ city.id }}"><span class="{% ifequal category '' %}active2{% endifequal %}">全部</span></a>大专栏

标签:city,在线,lib,mymooc,home,筛选,peter,id,符合条件
来源: https://www.cnblogs.com/sanxiandoupi/p/11718115.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有