from django import template from django.core.urlresolvers import resolve, reverse from django.utils.translation import activate, get_language register = template.Library() @register.simple_tag(takes_context=True) def change_lang(context, lang=None, *args, **kwargs): path = context['request'].path url_parts = resolve(path) url = path cur_language = get_language() try: activate(lang) url = reverse(url_parts.view_name, kwargs=url_parts.kwargs) finally: activate(cur_language) return "%s" % url @register.filter('get_value_from_dict') def get_value_from_dict(dict_data, key): """ usage example {{ your_dict|get_value_from_dict:your_key }} """ if key: return dict_data.get(key) else: return "" @register.filter('multiply') def multiply(value, arg): """ usage: {{ quantity|multiply:price }} :param value: :param arg: :return: """ return value * arg @register.filter('escaped_line_break') def escaped_line_break(value): """ usage: {{ text|escaped_line_break }} :param value: :return: """ return value.replace("\\n", "\n")