我为用户上传了一些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表单?
如果可能的话,从视图中的表单获取数据,而不知道参数的名称将其从表单传递给视图
答案 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)