2015-11-12 36 views
0

我爲用戶上傳了一些XML文件。這些文件是向不同Web服務請求的模板。 我想知道是否可以讀取該文件並根據XML的字段創建一個django表單。DJANGO動態視圖和表單

如果這是可能的,我需要從窗體接收值來重寫或創建XML文件,我將作爲請求發送到Web服務。

例如在其他項目從我使用

對於GET方法的形式接收值:

REQUEST.GET.GET( 'name_of_argument')

對於POST方法:

REQUEST.POST.GET('name_of_argument')

但在這種情況下,我知道參數的名稱。 在xml文件中,至少有5個不同名稱的參數。 如何讀取參數的名稱並在視圖中使用它來獲取數據以傳遞給Web服務。

換句話說:基於xml文件中

如果可能的話克里特Django的形式?

如果有可能得到在視圖中表單中的數據不知道名字的參數從表單傳遞給視圖

回答

0

這是可能的。您只需解析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) 
+0

謝謝,我會嘗試這種方法。 – joselegit

+0

完美的作品,我只有一個疑問。我可以渲染表單,但如何從視圖中的參數中獲取數據如果我不知道參數的名稱 – joselegit

+0

您需要一個循環才能從form.cleaned_data中獲取字段和值,它是一個字典。 –