首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flask-admin:美化json字段

flask-admin:美化json字段
EN

Stack Overflow用户
提问于 2019-03-09 15:21:26
回答 1查看 1.3K关注 0票数 1

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

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

谁能给我一些建议,从哪里开始美化列表视图(以及后来的编辑视图)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-15 20:19:17

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

代码语言:javascript
复制
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,
    }

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

代码语言:javascript
复制
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

堆栈溢出上有several other examples of flask_admin格式化程序的使用,但是有一个特定于JSON的格式化程序不会有什么坏处。

可以重写flask_admin.form.fields.JSONField以在输入中显示漂亮的值。它使用了form_overrides属性:

代码语言:javascript
复制
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,
    }
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55075001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档