自定义 filter
在app目录下新建文件夹templatetags,再新建tcm_tags.py文件,内容如下
from django import template
from ..models.model_sample import *
register = template.Library()
@register.filter
def fit_title(value,length):
if len(str(value)) > length:
return value[0:length]+"..."
else:
return value
在html模板中,就可以使用fit_title这个filter,但使用前需要先Load一下{% load tcm_tags %}
这个filter的作用是,将超长的string截成指定的长度,并在后面加上...
<li><a href="{{program.get_url}}">{{ program.name | fit_title:20 }}</a></li>
自定义simple_tag
@register.simple_tag
def simpleTaskStatus(sample_id, task_id):
# 在这里编写自定义逻辑
# result = sample_id + task_id
# sample = Sample.objects.get(sample_id)
result = SampleTaskStatus.objects.get(sample__id = sample_id, task__id = task_id)
return result
在html中使用如下:
{% simpleTaskStatus main_object.id task.id as taskStatus %}
自定义 simple_tag的主要是因为model中定义的function在html模板中调用时无法传递参数(不知道有没有别的办法)