flask-admin:美化json字段

时间:2019-03-09 07:21:26

标签: flask flask-admin

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

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

有人可以给我任何指针来开始美化列表视图(以及后来的编辑视图)吗?

1 个答案:

答案 0 :(得分:1)

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

org.assertj.core.api.Assertions

或者您可以使用column_type_formatters将此样式应用于视图中的所有词典字段:

java8

在Stack Overflow上有several other examples个flask_admin格式化程序使用,但是拥有一个特定于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, } 以在输入中显示漂亮的值。使用form_overrides属性:

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

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

MY_FORMATTERS = typefmt.BASE_FORMATTERS.copy()
MY_FORMATTERS[dict] = json_formatter

class MyView(ModelView):
    column_type_formatters = MY_FORMATTERS