博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django之组合搜索组件(二)--另附simple_tag的创建使用方法
阅读量:6582 次
发布时间:2019-06-24

本文共 4422 字,大约阅读时间需要 14 分钟。

这次的代码为Django之组合搜索组件(一)的改版,实现的结果和(一)相同,不同的是,这次运用simple_tag方式,使.html程序简化

所以现在就开始编程吧!

首先想使用simple_tag方法,那就先对simple_tag进行配置

a、通过python manage.py startapp app01(app的名字)创建一个app,然后再app的子目录下创建templatetags文件夹,一定是templatetags文件夹,其他名称的文件夹没有用,然后再该文件夹下创建.py文件,在该文件里编写simple_tag装饰

 

b、要在与工程名字相同的问价里的settings.py文件下找到INSTALLED_APPS,将app01写入,使其进行创建 

 

c、接下来就要开始在templatetags文件夹下编写程序了,例filter.py

from django import templatefrom django.utils.safestring import mark_safe    #包装一下register = template.Library()@register.simple_tag          # 装饰def filter_all(arg_dict,k):   # aig_dict 为前端发送过来的 k为前端传送article_type_id的参数    if k == 'article_type_id':        n1 = arg_dict['article_type_id']        n2 = arg_dict['category_id']        if n1 == 0:            ret = '全部' % n2  #生成模板        else:            ret = '全部' % n2    else:        n1 = arg_dict['category_id']        n2 = arg_dict['article_type_id']        if n1 == 0:            ret = '全部' % n2        else:            ret = '全部' % n2    return mark_safe(ret)              #传送到前端@register.simple_tagdef filter_article_type(article_type_list,arg_dict):    ret = []    for row in article_type_list:        if row.id == arg_dict['article_type_id']:            temp = '%s' %(row.id,arg_dict['category_id'],row.caption,)        else:            temp = '%s' %(row.id,arg_dict['category_id'],row.caption,)        ret.append(temp)    return mark_safe(''.join(ret))   #需要进行包装@register.simple_tagdef filter_category(category_list,arg_dict):    rat=[]    for row in category_list :        if row.id == arg_dict['category_id']:            temp = '%s' %(arg_dict['article_type_id'],row.id,row.caption,)        else:            temp = '%s' %(arg_dict['article_type_id'],row.id,row.caption,)        rat.append(temp)        return mark_safe(''.join(rat))   #需要进行包装

d、在前端的.html文件中

{% load filter %} 
{% filter_all arg_dict 'article_type_id' %}
{% filter_article_type article_type_list arg_dict %}

那接下来就是对simple_tag装饰功能的演示了!

代码和Django之组合搜索组件(一)代码相同,不同的是.html文件了的代码做出了相应的修改和filter.py的创建,具体创建方法我就不在细说了,就用图片演示一下吧!

 

filter.pyfrom django import templatefrom django.utils.safestring import mark_safe    #包装一下register = template.Library()@register.simple_tag          # 装饰def filter_all(arg_dict,k):   # aig_dict 为前端发送过来的 k为前端传送article_type_id的参数        if k == 'article_type_id':        n1 = arg_dict['article_type_id']        n2 = arg_dict['category_id']        if n1 == 0:            ret = '全部' % n2  #生成模板        else:            ret = '全部' % n2    else:        n1 = arg_dict['category_id']        n2 = arg_dict['article_type_id']        if n1 == 0:            ret = '全部' % n2        else:            ret = '全部' % n2    return mark_safe(ret)              #传送到前端@register.simple_tagdef filter_article_type(article_type_list,arg_dict):    ret = []    for row in article_type_list:        if row.id == arg_dict['article_type_id']:            temp = '%s' %(row.id,arg_dict['category_id'],row.caption,)        else:            temp = '%s' %(row.id,arg_dict['category_id'],row.caption,)        ret.append(temp)    return mark_safe(''.join(ret))   #需要进行包装@register.simple_tagdef filter_category(category_list,arg_dict):        rat=[]    for row in category_list :        if row.id == arg_dict['category_id']:            temp = '%s' %(arg_dict['article_type_id'],row.id,row.caption,)        else:            temp = '%s' %(arg_dict['article_type_id'],row.id,row.caption,)        rat.append(temp)        return mark_safe(''.join(rat))   #需要进行包装
{% load filter %}  

过滤条件

{% filter_all arg_dict 'article_type_id' %}
{% filter_article_type article_type_list arg_dict %}
{% filter_all arg_dict 'category_id' %}
{% filter_category category_list arg_dict %} {# {% for row in category_list %}#}{# {% if row.id == arg_dict.category_id %}#}{#
{
{ row.caption }}
#}{# {% else %}#}{#
{
{ row.caption }}
#}{# {% endif %}#}{# {% endfor %}#}

查询结果

    {% for row in result %}
  • {
    { row.id }}-{
    { row.title }}
  • {% endfor %}

最后的结果也为这样,知识利用simple_tag缩短了html文件的代码量

 

转载于:https://www.cnblogs.com/zhuifeng-mayi/p/9163226.html

你可能感兴趣的文章
23种设计模式之建造者模式
查看>>
计算机网络笔记2:物理层
查看>>
POJ3080-Blue Jeans
查看>>
POJ2229 Sumsets
查看>>
在LINQ-TO-SQL中实现“级联删除”的方法
查看>>
在Oracle Form中,如何实现自动编号(行号)的功能
查看>>
xcode7中搭建python开发环境
查看>>
java设计模式-建造者模式
查看>>
hdu-2604 Queuing---递推+矩阵快速幂
查看>>
OC基础第一讲
查看>>
超越MySQL:三个流行MySQL分支的对比(转)
查看>>
yii2权限控制rbac之rule详细讲解(转)
查看>>
lemur run PLSA
查看>>
Python中什么是变量Python中定义字符串
查看>>
资源文件
查看>>
yii2设置默认控制器
查看>>
Hibernate的大对象映射
查看>>
mongodb 的基本操作
查看>>
Django文档阅读之查询
查看>>
如何把pdf转换为txt文档,pdf转txt的好方法
查看>>