目的
组合搜索实现如下图功能
知识点
1.使用自定义标签模板(templatetags)
实现
models.py 和 views.py和初级篇一样
重点如下:在app01目录下创建templatetags文件夹,并且创建一个.py文件,我创建了filter.py文件
1 # 需要在模版中注册 2 from django import template 3 from django.utils.safestring import mark_safe 4 register = template.Library() 5 @register.simple_tag 6 def filter_all(arg_dict,k): 7 ''' 8 {% if arg_dict.article_type_id == 0 %} 9 10 {% else %} 11 <a href="/article-0-{{ arg_dict.category_id }}.html">全部</a> 12 {% endif %} 13 ''' 14 ret = "" 15 if k == 'article_type_id': 16 n1 = arg_dict[k] 17 n2 = arg_dict['category_id'] 18 if n1 == 0: 19 ret = '<a class="active" href="/article-0-%s.html">全部</a>' % n2 20 else: 21 ret = '<a href="/article-0-%s.html">全部</a>' % n2 22 else: 23 n1 = arg_dict[k] 24 n2 = arg_dict['article_type_id'] 25 if n1 == 0: 26 ret = '<a class="active" href="/article-%s-0.html">全部</a>' % n2 27 else: 28 ret = '<a href="/article-%s-0.html">全部</a>' % n2 29 30 return mark_safe(ret) 31 32 @register.simple_tag 33 def filter_article_type(article_type_list,arg_dict,k): 34 ''' 35 {% for row in article_type_list %} 36 {% if row.id == arg_dict.article_type_id %} 37 <a class="active" href="/article-{{ row.id }}-{{ arg_dict.category_id }}.html">{{ row.caption }}</a> 38 {% else %} 39 <a href="/article-{{ row.id }}-{{ arg_dict.category_id }}.html">{{ row.caption }}</a> 40 {% endif %} 41 {% endfor %} 42 ''' 43 ret = [] 44 for row in article_type_list: 45 if k=='article_type_id': 46 if row.id == arg_dict['article_type_id']: 47 temp = '<a class="active" href="/article-%s-%s.html">%s</a>' % (row.id, arg_dict["category_id"], row.caption) 48 else: 49 temp = '<a href="/article-%s-%s.html">%s</a>' % (row.id, arg_dict["category_id"], row.caption) 50 else: 51 if row.id == arg_dict['category_id']: 52 temp = '<a class="active" href="/article-%s-%s.html">%s</a>' % ( arg_dict["article_type_id"],row.id, row.caption) 53 else: 54 temp = '<a href="/article-%s-%s.html">%s</a>' % ( arg_dict["article_type_id"],row.id, row.caption) 55 ret.append(temp) 56 return mark_safe("".join(ret))