Skip to main content

Django miscellaneous - module with different useful stuff for django. Here you'll find: - couple decorators, like render_to and receive; - json_encode module for simplify work with json; - some usefull templatetags, like set, filter, get etc; some additional utilities; - bbcode template tags; - template tags that provide like and share for social sevices.

Project description


Django misc is module with set of utilities, decorators, templatetags that everybody uses at least once in project. So here they all in one application, that will grow to aggregate all usefull utilities for Django.

Quick overview

Here you’ll find:

  • Couple decorators, like render_to and receive

  • Json_encode module for simplify work with json

  • Some usefull templatetags, like set, filter, get etc

  • Some additional utilities

  • Bbcode template tags

  • Template tags that provide like and share for social sevices


  • python >= 2.5

  • pip >= 0.8

  • django >= 1.2

Optional (for html clearing and bbcodes):

  • BeautifulSoup

  • git+git://


Django misc should be installed using pip:

pip install git+git://

or for stable version:

pip install django-misc


  • Add ‘misc’ to INSTALLED_APPS

    INSTALLED_APPS += ( 'misc', )
  • If you want to use the html clearer

    pip install BeautifulSoup
  • If you want to use bbcodes

    pip install git+git://

Use django-misc

Template tags

{% load html_tags %}

{% remove_tags <text> %}

Removes html tags and replace <br/> by n

{% load misc_tags %}

{{ text|cutafter:"<length>" }}

Cut text after <length> characters and, if necessary, add tree dots (…) to the end

{% get_range <length> %}

Return simple python range(<length>) list

{% get_element <dict> <key1> [<key2>] %}

Return a dict value by key1 and, if specified, key2 (i.e. dict[key1][key2])



It works like TemplateResponse, but return JSON response


return JSONTemplateResponse(request, template_name, template_context, data={'status': 'ok', 'user': request.user})

This line will create response

    "status": "ok",
    "user": {
        "username": "frol",
        "first_name": "",
        "last_name": "",
        "is_active": true,
        "email": "qq@qq.qq",
        "is_superuser": true,
        "is_staff": true,
        "last_login": "2012-01-24 18:59:55",
        "password": "sha1$fffff$1b4d68b3731ec29a797d61658c716e2400000000",
        "id": 1,
        "date_joined": "2011-07-09 05:57:21"
    "html": "<rendered HTML>"

WARNING: Be carefull with serialization of model objects. As you can see in example, password hash has been serialized.



Serialize python object into JSON string.

The main issues with django’s default json serializer is that properties that had been added to an object dynamically are being ignored (and it also has problems with some models).



Serialize python object into JSON string and return HttpResponse with correct content_type (application/json)


json_template(data, template_name, template_context)

Render template, add it for serialization data, serialize data into JSON string and return HttpResponse with correct content_type.

Context processors


If you want use True, False, None in django templates, add line to TEMPLATE_CONTEXT_PROCESSORS in


Example, A = True, B = False, C = None, D - undefined:

{% if A == True %}A is True{% endif %}
{% if A == False %}A is False{% endif %}
{% if A == None %}A is None{% endif %}

{% if B == True %}B is True{% endif %}
{% if B == False %}B is False{% endif %}
{% if B == None %}B is None{% endif %}

{% if C == True %}C is True{% endif %}
{% if C == False %}C is False{% endif %}
{% if C == None %}C is None{% endif %}

{% if D == True %}D is True{% endif %}
{% if D == False %}D is False{% endif %}
{% if D == None %}D is None{% endif %}

Will produce output:

A is True
B is False
C is None
D is None

Views utils



Put server_error as your handler500 in and add templates/errors/500.html

handler500 = 'misc.views.server_error'

decorator to_template or render_to


Decorator to simply call direct_to_template:

def test(request):
    return {'test': 100}

def test2(request):
    return {'test': 100, 'TEMPLATE': 'test.html'}

def test2(request, template_name='test.html'):
    return {'test': 100, 'TEMPLATE': template_name}



Reload current page.

def simple_view(request, form_class=CommentForm, template_name='some_template.html'):
    form = CommentForm(request.POST or None)
    if form.valid():
        return HttpResponseReload(request)
    return render(template_name, {'form': form})



Returns a class based on class name



Returns pair of english and russian alphabets. Useful for creating filters.

Management utils



Decorate the handle method with a file lock to ensure there is only ever one process running at any one time.


sync_site is post syncdb event, that will sync current Site object with settings like SITE_NAME and SITE_DOMAIN

HTML utils



Clean up HTML code from tags that are not allowed. Structure of allowed tags can be found at needs.cfg. is generated by html/ with needs.cfg as config file



Will generate source code file, according to rules specified at needs.cfg. Example of simpler configuration file can be found in example.cfg


Development of django-misc happens at github:


Copyright (C) 2009-2013 Illia Polosukhin, Vladyslav Frolov This program is licensed under the MIT License (see LICENSE)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (34.0 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page