react.js基于DRF HTTP OPTIONS动态生成表单

and*_*abs 6 django rest django-rest-framework reactjs

是否有基于django-rest-framework OPTIONS的反应渲染表单的包?

我的意思是让表单基于smth呈现如下:

{
    "name": "Spots Rating List",
    "description": "",
    "renders": [
        "application/json",
        "text/html"
    ],
    "parses": [
        "application/json",
        "application/x-www-form-urlencoded",
        "multipart/form-data"
    ],
    "actions": {
        "POST": {
            "pk": {
                "type": "integer",
                "required": false,
                "read_only": true,
                "label": "ID"
            },
            "created_at": {
                "type": "datetime",
                "required": false,
                "read_only": true,
                "label": "Created at"
            },
            "updated_at": {
                "type": "datetime",
                "required": false,
                "read_only": true,
                "label": "Updated at"
            },
            "is_enabled": {
                "type": "choice",
                "required": false,
                "read_only": false,
                "label": "Is enabled",
                "choices": [
                    {
                        "value": false,
                        "display_name": "Not allowed"
                    },
                    {
                        "value": true,
                        "display_name": "Allowed"
                    }
                ]
            },
            "friendly_rate": {
                "type": "choice",
                "required": true,
                "read_only": false,
                "label": "Friendly rate",
                "choices": [
                    {
                        "value": 1,
                        "display_name": "terrible"
                    },
                    {
                        "value": 2,
                        "display_name": "poor"
                    },
                    {
                        "value": 3,
                        "display_name": "average"
                    },
                    {
                        "value": 4,
                        "display_name": "very good"
                    },
                    {
                        "value": 5,
                        "display_name": "excellent"
                    }
                ]
            },
            "opinion": {
                "type": "nested object",
                "required": false,
                "read_only": true,
                "label": "Opinion",
                "children": {
                    "pk": {
                        "type": "field",
                        "required": true,
                        "read_only": false,
                        "label": "Rating"
                    },
                    "created_at": {
                        "type": "datetime",
                        "required": false,
                        "read_only": true,
                        "label": "Created at"
                    },
                    "updated_at": {
                        "type": "datetime",
                        "required": false,
                        "read_only": true,
                        "label": "Updated at"
                    },
                    "opinion_text": {
                        "type": "string",
                        "required": true,
                        "read_only": false,
                        "label": "Opinion text",
                        "max_length": 500
                    }
                }
            },
            "tags": {
                "type": "field",
                "required": false,
                "read_only": false,
                "label": "Tags"
            },
            "user": {
                "type": "field",
                "required": false,
                "read_only": true,
                "label": "User"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

无法在网上任何参考.大多数都是硬编码的组件,对我来说是丑陋的,而且很差...... https://www.valentinog.com/blog/tutorial-api-django-rest-react/#Django_REST_with_React_building_a_React_form

或者,如果至少可以获得表单生成的组件代码,也可以.

adk*_*dkl 1

我知道这不是完整的答案,但值得注意的是DRF Schema Adapter是一个旨在为前端框架导出此 DRF 元数据功能的项目。目前,它仅适用于 Ember 和 Angular,但为 React 编写自己的适配器似乎并不难,因为它提供了与 React 一起使用的 MobxAxiosAdapter。

即使您没有资源来开发这样的东西,您也可以为这个库添加书签并等待 React 中的表单得到支持。