views.py
from django import template
register = template.Library()
@register.filter
def truncatesmart(value, limit=80):
"""
Truncates a string after a given number of chars keeping whole words.
Usage:
{{ string|truncatesmart }}
{{ string|truncatesmart:50 }}
"""
try:
limit = int(limit)
# invalid literal for int()
except ValueError:
# Fail silently.
return value
# Make sure it's unicode
value = unicode(value)
# Return the string itself if length is smaller or equal to the limit
if len(value) <= limit:
return value
# Cut the string
value = value[:limit]
# Break into words and remove the last
words = value.split(' ')[:-1]
# Join the words and return
return ' '.join(words) + '...'
html
{% block content %}
<div class="container-fluid">
<div class="container" id="content">
<div class="span3">
<div class="dashboard">
<div class="well smooth-edge2 shadow">
<div class="mini-info">
<div class="username">
<h2 class="text-center">{{rest.name|truncatesmart}}</h2>
{% endblock %}
エラー
TemplateSyntaxError at /rprofile/info
Invalid filter: 'truncatesmart'
疑い
このカスタムフィルターが機能しない理由がわかりません。タイトルなどの他のすべての定義済みフィルターは機能していますが、このカスタムフィルターはまったく機能していません。