flask管理员:美化json字段

flask管理员:美化json字段,flask,flask-admin,Flask,Flask Admin,我真的很喜欢flask admin的CRUD功能。 不幸的是,我还没有找到使json DB字段更具可读性的方法 JSON字段在列表视图(以及编辑视图)中显示为文本字符串 有人能告诉我从哪里开始美化列表视图(以及以后的编辑视图)吗?您可以使用自定义列表视图中字段的外观: import json from flask_admin.contrib.sqla.view import ModelView from jinja2 import Markup def json_formatter(view,

我真的很喜欢flask admin的CRUD功能。 不幸的是,我还没有找到使json DB字段更具可读性的方法

JSON字段在列表视图(以及编辑视图)中显示为文本字符串

有人能告诉我从哪里开始美化列表视图(以及以后的编辑视图)吗?

您可以使用自定义列表视图中字段的外观:

import json
from flask_admin.contrib.sqla.view import ModelView
from jinja2 import Markup

def json_formatter(view, context, model, name):
    value = getattr(model, name)
    json_value = json.dumps(value, ensure_ascii=False, indent=2)
    return Markup('<pre>{}</pre>'.format(json_value))

class MyView(ModelView):
    column_formatters = {
        'my_json_field': json_formatter,
    }
您可以使用自定义列表视图中字段的外观:

import json
from flask_admin.contrib.sqla.view import ModelView
from jinja2 import Markup

def json_formatter(view, context, model, name):
    value = getattr(model, name)
    json_value = json.dumps(value, ensure_ascii=False, indent=2)
    return Markup('<pre>{}</pre>'.format(json_value))

class MyView(ModelView):
    column_formatters = {
        'my_json_field': json_formatter,
    }

非常感谢。格式化程序工作正常,但不显示缩进结构。我认为需要添加标签
。有什么建议吗?@哈里发你说得对,我忘了。修正了答案。简而言之:您可以在格式化程序函数中使用HTML标记,但它们需要包装在
jinja2.Markup
函数中。太棒了!非常感谢分享!非常感谢。格式化程序工作正常,但不显示缩进结构。我认为需要添加标签
。有什么建议吗?@哈里发你说得对,我忘了。修正了答案。简而言之:您可以在格式化程序函数中使用HTML标记,但它们需要包装在
jinja2.Markup
函数中。太棒了!非常感谢分享!
from flask_admin.contrib.sqla.view import ModelView
from flask_admin.form import fields

class JSONField(fields.JSONField):
    def _value(self):
        if self.raw_data:
            return self.raw_data[0]
        elif self.data:
            return json.dumps(self.data, ensure_ascii=False, indent=2)
        else:
            return ''

class MyView(ModelView):
    form_overrides = {
        'my_field': JSONField,
    }