ostinato.contentfilters¶
The ostinato.contentfilters
app provides you with a easy way to apply a
list of filters to content, which is rendered in your templates. The basic
functionality is the same as standard django template filters, except that
they are appllied as a group. This is handy if you want to apply a whole range
of filters to a single piece of content.
We also include a couple of filters for some common use cases.
Writing a Contentfilter¶
Start by creating a standard django template tag library. In our case we will
call this custom_filters.py
.
from django import template
register = template.Library()
Now we need to create our filter. For this example we will create a simple filter that will convert the content to uppercase.
from django import template
from ostinato.contentfilters import ContentMod
register = template.Library()
def to_upper(content):
return content.upper()
ContentMod.register('upper', to_upper)
As you can see you just create a basic function, which takes a single argument,
content
. You then do some processing on your content, and return the result.
The last thing you need to do is register your modifier with
ostinato.contentfilters.ContentMod
. The first argument here is the unique
name for the filter. The second argument is the function to use.
Using the filters in your templates¶
Now that you have your content filters registered, you can use them in your templates.
{% load content_filters custom_filters %}
{{ 'some lowercase content'|modify }}
Firstly note that we need to load both template tag libraries for
content_filters
and custom_filters
.
Secondly you will see we just applied a single modify
filter to our content.
Calling modify
without any arguments will run through all registered
filters.
You can apply specific filters by passing it as arguments to modify
:
{% load content_filters custom_filters %}
{{ 'some lowercase content'|modify:"upper,another_filter" }}
You can also tell it to exclude filters. The following will use all
registered filters, except for upper
and youtube
. Note the exclamation
mark at the start of the filter list.
{% load content_filters custom_filters %}
{{ 'some lowercase content'|modify:"!upper,another_filter" }}
Default content filters included with ostinato.contentfilters¶
youtube
- Searches for a youtube url in the content, and replaces it withthe html embed code.
snip
- Searches for a string,{{{snip}}}
in the content, and if foundit truncates the content at that point.
hide_snip
- Searches for a string,{{{snip}}}
in the content, and iffound, removes it from the content.