Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

django-prettyjson

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

django-prettyjson

Enables pretty JSON viewer in Django forms, admin, or templates

  • 0.4.1
  • PyPI
  • Socket score

Maintainers
1

django-prettyjson

PyPi Version Build Status

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).

Demo

See http://kevinmickey.github.io/django-prettyjson

Installation

At the command line:

pip install django-prettyjson

Configuration

Add 'prettyjson' to INSTALLED_APPS in settings.py:

INSTALLED_APPS = (
  ...,
  'prettyjson',
)

Usage

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.

Configure Rendering

By 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:

class JsonAdmin(admin.ModelAdmin):
  formfield_overrides = {
    JSONField: {'widget': PrettyJSONWidget(attrs={'initial': 'parsed'})}
  }

Or, in a template tag:

{% prettyjson mydict initial='parsed' %}

Running Tests

In development.

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements-test.txt
(myenv) $ python runtests.py

Credits

Dependencies, parts of code, and/or sources of inspiration:

Tools used in developing, testing, and/or rendering this package:

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 loaded

0.2.1 (2016-07-01) ++++++++++++++++++

  • Fixed manifest

0.2.2 (2016-12-07) ++++++++++++++++++

  • Added dependencies to setup.py

0.3.0 (2017-05-23) ++++++++++++++++++

  • Added "initial" option to show raw or parsed initial
  • Requires six

0.3.1 (2018-04-01) ++++++++++++++++++

  • Allows CSS control of parsed widget

0.3.2 (2018-04-09) ++++++++++++++++++

  • Fixes widget media order

0.3.3 (2018-04-13) ++++++++++++++++++

  • Fixes string passed as parameter

0.4.0 (2018-04-30) ++++++++++++++++++

  • Allows attrs in template tag
  • Fix JS for initial parsed with multiple widgets
  • Change parsed CSS height to max-height

0.4.1 (2018-08-07) ++++++++++++++++++

  • Fix widget for Django 2.1

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc