gec*_*kon 0 python forms django json
我正在创建一个 Django 站点,我想添加基于来自外部源的 JSON 描述动态生成的表单。
例如这样的事情:
[
{
"name": "first_name",
"label": "First Name",
"type": "char",
"max_length": 30,
"required": 1
},
{
"name": "last_name",
"label": "Last Name",
"type": "char",
"max_length": 30,
"required": 1
},
]
Run Code Online (Sandbox Code Playgroud)
然后会给我一个带有两个CharFields的简单 Django 表单,我将向用户显示该表单并保存他/她输入的值以供进一步处理。
我进行了搜索,但没有找到任何从 JSON 创建 Django 表单的应用程序。我可以自己编写这样的应用程序,我只是想知道是否已经有任何东西。
如果没有,您至少知道任何允许描述表单的 JSON 模式格式吗?同样,我可以自己想出它,但我想看一些例子,这样我就不会遗漏重要的可能性,并且有一些可靠的开始。
谢谢!
您可以像这样使用django-jsonforms:
表格.py:
from django.forms import ModelForm, Form
from django_jsonforms.forms import JSONSchemaField
first_name_schema = {
"type": "object",
"required": ["First Name"],
"properties": {
"First Name": {
"type": "string",
"maxLength": 30
}
}
}
last_name_schema = {
"type": "object",
"required": ["Last Name"],
"properties": {
"Last Name": {
"type": "string",
"maxLength": 30,
}
}
}
options = {"no_additional_properties": True}
class CustomForm(Form):
first_name = JSONSchemaField(schema = first_name_schema, options = options)
last_name = JSONSchemaField(schema = last_name_schema, options = options)
Run Code Online (Sandbox Code Playgroud)
视图.py:
from .forms import CustomForm
def some_view(request):
return render(request, 'some_html.html', {'form': CustomForm()})
Run Code Online (Sandbox Code Playgroud)
some_html:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="some_form" action="/path/to/some_view/" method="post">
{% csrf_token %}
{{ form.media }}
{{ form }}
<button type="submit">submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请访问文档
编辑:
您可以通过像这样修改选项字典来删除表单中的额外按钮:
options = {
"no_additional_properties": True,
"disable_collapse": True,
"disable_edit_json": True,
"disable_properties": True
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3142 次 |
| 最近记录: |