前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django Admin输出JSON

Django Admin输出JSON

作者头像
用户1416054
发布2018-08-02 11:48:49
1.1K0
发布2018-08-02 11:48:49
举报
文章被收录于专栏:JackeyGao的博客

Django Admin输出JSON

Posted March 15, 2017

Django 自带Admin后台这是Django的优势所在, 这样的话我们可以开箱即用后台功能。 有人说Django重, 可能设计就是这样, 过度的封装就是让开发者更简单的实现。 比起flask、tornado等轻量级的框架。 Django更适合做支撑系统的开发。

当然本文不讲述Django和其他轻量级框架的优劣, 主要说一个修改Admin后台的例子。 虽然Admin可以对定义的模型表做一些基本的增删改查, 但是有时候我们需要加一些功能。 比如: 我想在change页面加入一个字段, 可以完整的显示整个实例的所有字段, 并以JSON的格式显示出来。 这样对于我在开发API的时候能更加直观, 而且我想显示的JSON是格式化之后的, 最好是加上语法高亮.

所以我用了以下代码去完成了这个需求:

Python

代码语言:javascript
复制
from django.contrib import admin
import json
import copy
from pygments import highlight
from pygments.lexers import JsonLexer
from pygments.formatters import HtmlFormatter

from django.contrib import admin
from django.utils.safestring import mark_safe

from .models import APIData


class APIDataAdmin(admin.ModelAdmin):
    readonly_fields = ('data_prettified',)

    def data_prettified(self, instance):
        """Function to display pretty version of our data"""
        # Convert the data to sorted, indented JSON
        data = copy.deepcopy(instance.__dict__)
        data.pop('_state')
        response = json.dumps(data, sort_keys=True, indent=2)

        # Truncate the data. Alter as needed
        response = response[:5000]

        # Get the Pygments formatter
        formatter = HtmlFormatter(style='colorful')

        # Highlight the data
        response = highlight(response, JsonLexer(), formatter)

        # Get the stylesheet
        style = "<style>" + formatter.get_style_defs() + "</style><br>"

        # Safe the output
        return mark_safe(style + response)

    data_prettified.short_description = 'data prettified'

admin.site.register(APIData, APIDataAdmin)

完成后的效果图

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Django Admin输出JSON
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档