Package: django-prettyjson
# django-prettyjson[![PyPi Version](https://badge.fury.io/py/django-prettyjson.png)](https://badge.fury.io/py/django-prettyjson) [![Build Status](https://travis-ci.org/kevinmickey/django-prettyjson.svg?branch=master)](https://travis-ci.org/kevinmickey/django-prettyjson)Enables pretty JSON viewer in Django forms, admin, or templates.  The viewer is adapted from [jQuery JSONView](https://github.com/yesmeck/jquery-jsonview).  It is compatible with almost anything: JSON stored in a string, a jsonfield (using django.contrib.postgres or [django-jsonfield](https://github.com/bradjasper/django-jsonfield/)), or any python object that can be serialized to JSON (using [standardjson](https://github.com/audreyr/standardjson)).## DemoSee http://kevinmickey.github.io/django-prettyjson## InstallationAt the command line:```shpip install django-prettyjson```## ConfigurationAdd `'prettyjson'` to `INSTALLED_APPS` in `settings.py`:```pythonINSTALLED_APPS = (...,'prettyjson',)```## UsageIn a form or admin of a model, enable a pretty JSON viewer for a particular field:```pythonfrom prettyjson import PrettyJSONWidgetclass JsonForm(forms.ModelForm):class Meta:model = Testfields = '__all__'widgets = {'myjsonfield': PrettyJSONWidget(),}class JsonAdmin(admin.ModelAdmin):form = JsonForm```Enable pretty JSON viewer for every JSONField of a model:```pythonfrom django.contrib.postgres.fields import JSONFieldclass 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 %}`.```htmldjango{% 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.### Configure RenderingBy default the jsonwidget will render as a raw string with a button to click to change it to parsed json. For it to render as parsed json initially, you can pass an argument:```pythonclass JsonAdmin(admin.ModelAdmin):formfield_overrides = {JSONField: {'widget': PrettyJSONWidget(attrs={'initial': 'parsed'})}}```Or, in a template tag:```python{% prettyjson mydict initial='parsed' %}```## Running TestsIn development.```shsource <YOURVIRTUALENV>/bin/activate(myenv) $ pip install -r requirements-test.txt(myenv) $ python runtests.py```## CreditsDependencies, parts of code, and/or sources of inspiration:* [jQuery JSONView](https://github.com/yesmeck/jquery-jsonview)* [standardjson](https://github.com/audreyr/standardjson)Tools used in developing, testing, and/or rendering this package:* [Cookiecutter](https://github.com/audreyr/cookiecutter)* [cookiecutter-djangopackage](https://github.com/pydanny/cookiecutter-djangopackage)History-------0.1.0 (2016-05-28)++++++++++++++++++* First release.0.2.0 (2016-05-29)++++++++++++++++++* Switched to using standardjson for encoding objects* Added setup option for those with jquery already loaded0.2.1 (2016-07-01)++++++++++++++++++* Fixed manifest0.2.2 (2016-12-07)++++++++++++++++++* Added dependencies to setup.py0.3.0 (2017-05-23)++++++++++++++++++* Added "initial" option to show raw or parsed initial* Requires six0.3.1 (2018-04-01)++++++++++++++++++* Allows CSS control of parsed widget0.3.2 (2018-04-09)++++++++++++++++++* Fixes widget media order0.3.3 (2018-04-13)++++++++++++++++++* Fixes string passed as parameter0.4.0 (2018-04-30)++++++++++++++++++* Allows attrs in template tag* Fix JS for initial parsed with multiple widgets* Change parsed CSS height to max-height0.4.1 (2018-08-07)++++++++++++++++++* Fix widget for Django 2.1