DJANGO动态视图和表格

时间:2015-11-12 23:03:39

标签: xml django django-forms django-views

我为用户上传了一些XML文件。此文件是向不同Web服务发出请求的模板。 我想知道是否可以读取文件并根据XML的字段创建一个django表单。

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

例如,在我使用

表单中接收值的其他项目中

对于GET方法:

  

REQUEST.GET.GET(' name_of_argument&#39)

对于POST方法:

  

REQUEST.POST.GET(' name_of_argument&#39)

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

换句话说:

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

如果可能的话,从视图中的表单获取数据,而不知道参数的名称将其从表单传递给视图

1 个答案:

答案 0 :(得分:0)

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

假设你从['foo', 'bar', 'baz']这样的XML获得字段名称,然后在你的表单中:

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)