博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django学习笔记 自定义标签
阅读量:4165 次
发布时间:2019-05-26

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

需求:

想在Template里根据一个Object的类名来分别做不同的操作。难点是如何获得类名。

解决方法

使用自定义标签。
1.在导入的APP下添加标签文件

app/templatetags/  __init__.py  getclassname.py

2.getclassname.py 代码如下

from django import template    register = template.Library()    @register.filter(name='get_class')    def get_class(value):      return value.__class__.__name__

3.然后在模板文件里可以使用

{% load getclassname %}{% if Object|get_class == 'AClassName' %} do something{% endif %}

有时候可能会发生Load错误,需要重启下服务器,将新的Tag文件读取进来。

有参数,返回值作为变量来使用时,如下。

想要获取到select的choices时如下

---tag.py---@register.filter(name='display_choices_value')def display_choices_value(bf,arg):    """Returns the display value of a BoundField"""    return dict(bf.field.choices).get(arg)---template.html---{
{ field|display_choices_value:1 }}---template.html--- {% with obj|mymethod:obj2 as newobj %} {% endwith %}

参考:

转载地址:http://jgmxi.baihongyu.com/

你可能感兴趣的文章
Java集合(6) - LinkedHashMap源码解析
查看>>
Java集合(7) - TreeMap源码解析
查看>>
Java集合(8) - Set与AbstractSet源码解析
查看>>
Java多线程(2) - 多线程之线程安全详解(synchronized、Lock)
查看>>
OKR与CFR管理模式(二)-CFR与OKR的绩效管理
查看>>
Java多线程(3) - 多线程之死锁
查看>>
Java多线程(4) - 多线程之Volatile关键字、ThreadLocal、Atomic系列类、CAS
查看>>
Java多线程(5) - 多线程之线程通讯(一)(wait、notify、join、yield、sleep区别与应用)
查看>>
Java多线程(6) - 多线程之线程通讯(二)(wait与notify案例、守护线程)
查看>>
什么是项目管理?怎么管?(二)
查看>>
Java多线程(7) - 多线程之线程停止方式
查看>>
Java设计模式(1) - 单例设计模式多种写法
查看>>
Java设计模式(2) - 工厂设计模式
查看>>
Java多线程(8) - 同步(并发)类容器详解(CopyOnWrite容器、ConcurrentMap容器、Queue队列容器)
查看>>
Java设计模式(3) - 多线程并发设计模式 - Future设计模式
查看>>
Java设计模式(5) - 多线程并发设计模式 - 生产者-消费者设计模式多种写法
查看>>
Java多线程(9) - 多线程 - 线程池详解与使用示例
查看>>
Java多线程(10) - 多线程 - CountDownLatch、CyclicBarrier、Semaphore使用示例详解
查看>>
Java多线程(11) - 多线程 - 锁详解:重入锁、公平锁、非公平锁、读写锁、不可重入锁、自旋锁、独享锁、共享锁、互斥锁、悲观锁、乐观锁、分段锁、偏向锁、轻量级锁、重量级锁、CAS算法原理
查看>>
Java网络编程(10) - Netty网络编程常见问题与疑问
查看>>