DJANGO 动态视图和表单

DJANGO dynamic views and forms

我为用户上传了一些 XML 文件。这些文件是向不同的 Web 服务发出请求的模板。 我想知道是否可以读取文件并根据 XML.

的字段创建一个 django 表单

如果可能,我需要从表单接收值以重写或创建 XML 文件,我将作为请求发送到 Web 服务。

例如在其他项目中从我使用的表单接收值

对于 GET 方法:

REQUEST.GET.GET('name_of_argument')

对于POST方法:

REQUEST.POST.GET('name_of_argument')

但在这种情况下,我知道参数的名称。 在 xml 文件中至少有 5 个不同名称的参数。 如何读取参数的名称并在视图中使用它来获取要传递给 Web 服务的数据。

换句话说:

如果可能,创建一个基于 xml 文件的 django 表单?

如果可能,在不知道参数名称的情况下从视图中的表单获取数据,将数据从表单传递到视图

有可能。您只需解析 XML 文件,然后动态创建一个表单。这是一个粗略的例子:

假设您从 XML 中获得字段名称,例如 ['foo', 'bar', 'baz'],那么在您的表单中您会执行以下操作:

def DynamicForm(forms.Form):
    def __init__(self, *args, **kwargs):
        field_list = kwargs.pop('field_list', [])
        super(DynamicForm, self).__init__(*args, **kwargs)
        for field_name in field_list:
            # if you get the field type from xml as well you need
            # some if/else here to create the field type
            self.fields[field_name] = forms.CharField()

然后在您的 views.py 中,您执行:

def view(request):
    # pseudo code parse_xml
    field_names = parse_xml(xml_file)
    form = DynamicForm(request.POST or None, field_list=field_names)