Skip to content

Instantly share code, notes, and snippets.

@rudyryk
Last active January 28, 2016 14:31
Show Gist options
  • Save rudyryk/494d5d5e2d09ade8a65d to your computer and use it in GitHub Desktop.
Save rudyryk/494d5d5e2d09ade8a65d to your computer and use it in GitHub Desktop.
Django generic helpers template tags
# -*- coding: utf-8 -*-
#
# No Rights Reserved
# http://creativecommons.org/publicdomain/zero/1.0/
from __future__ import unicode_literals
from urllib.parse import urlencode, parse_qs, urlsplit, urlunsplit
from django.template import Library
from django.utils.safestring import mark_safe
register = Library()
@register.filter
def str_format(val, arg):
return val.format(arg)
@register.filter
def str_count(var, sub):
return var.count(sub)
@register.filter
def str_strip(var, symbols):
return var.strip(symbols) if var else var
@register.filter
def nbsp(val):
return mark_safe(val.replace(' ', ' '))
@register.filter
def is_between(val, minmax):
if minmax:
return (val >= minmax[0] and val <= minmax[1])
return False
@register.filter
def is_checkbox(field):
return 'type="checkbox"' in str(field)
@register.filter
def try_key(val, key):
return val.get(key)
@register.filter
def try_first(val):
if val:
return val[0]
@register.filter
def site_url(request):
return request.build_absolute_uri('/').strip('/')
@register.assignment_tag
def set_param(url, name, value):
"""Set new attribute to URL query.
"""
scheme, netloc, path, query, fragment = urlsplit(url)
query_params = parse_qs(query)
query_params[name] = [value]
new_query = urlencode(query_params, doseq=True)
return urlunsplit((scheme, netloc, path, new_query, fragment))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment