Enables pretty JSON viewer in Django forms, admin, or templates
Enables pretty JSON viewer in Django forms, admin, or templates. The viewer is adapted from jQuery JSONView. It is compatible with almost anything: JSON stored in a string, a jsonfield (using django.contrib.postgres or django-jsonfield), or any python object that can be serialized to JSON (using standardjson).
At the command line::
pip install django-prettyjson
Add 'prettyjson'
to INSTALLED_APPS
in settings.py
.
INSTALLED_APPS = (
...,
'prettyjson',
)
In a form or admin of a model, enable a pretty JSON viewer for a particular field:
from prettyjson import PrettyJSONWidget
class JsonForm(forms.ModelForm):
class Meta:
model = Test
fields = '__all__'
widgets = {
'myjsonfield': PrettyJSONWidget(),
}
class JsonAdmin(admin.ModelAdmin):
form = JsonForm
Enable pretty JSON viewer for every JSONField of a model:
from django.contrib.postgres.fields import JSONField
class JsonAdmin(admin.ModelAdmin):
formfield_overrides = {
JSONField: {'widget': PrettyJSONWidget }
}
In templates, you can also enable a pretty JSON viewer. Use the prettyjson
template tag with a string JSON or with objects (dicts, QuerySets, etc.) that can be serialized to a JSON. Note that the template tag must be loaded using {% load prettyjson %}
. It also has CSS and JS that must be included using {% prettyjson_setup %}
.
{% extends "base.html" %}
{% load prettyjson %}
{% block header %}
{{ block.super }}
{% prettyjson_setup %}
{% endblock %}
{% block content %}
{% prettyjson myqueryset %}
{% prettyjson mydict %}
{% prettyjson '{"hey": "guy","anumber": 243,"anobject": {"whoa": "nuts","anarray": [1,2,"thr<h1>ee"], "more":"stuff"},"awesome": true,"bogus": false,"meaning": null, "japanese":"明日がある。", "link": "http://jsonview.com", "notLink": "http://jsonview.com is great"}' %}
{% prettyjson '{}' %}
{% endblock %}
The setup includes jQuery, loaded as django.jQuery to avoid namespace conflict. If your page already includes jQuery, use {% prettyjson_setup jquery=False %}
to avoid loading jQuery a second time.
In development.
source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements-test.txt
(myenv) $ python runtests.py
Dependencies, parts of code, and/or sources of inspiration:
Tools used in developing, testing, and/or rendering this package: