2013-07-29 23 views
0

假設您已經擁有了一個複雜的HTML表單,可能來自設計人員,前端開發人員等等。對於複雜表單,不使用動態表單(基於Django表單)是否常見?僅將表單用於驗證

我想要做這樣的事情:

1)創建自定義HTML表單。

2.)通過POST請求抓取表單數據,將其放入對象/字典中。

3.)使用該數據對其進行一些操作,以便以Django窗體可接受的格式進行操作。

4)傳遞操縱數據到一個表單對象,驗證它,等...

什麼是一個明確的解決這個問題?我應該使用Django的一切動態表單嗎?如果沒有 - 我如何實現上述?

編輯:我的問題的

部分與使用形式僅用於驗證的事情。我認爲我沒有說清楚。這裏是我想要做的事:

template.html

<form method="post"> 
    {% csrf_token %} 
<input class="foo" name="bar" type="text" value=""/> 
<!-- Some more fields, not rendered through Django form --> 
<button type="submit">Create Object</button> 
</form> 

正如你所看到的,比其他csrf_token這裏沒有Django的代碼。在我看來,我想要做的是捕獲POST中的數據,對數據進行一些更改,然後嘗試將新數據綁定到表單(不確定是否有可能):

views.py

def my_view(request): 
    # Some GET code 

    if request.method == 'POST': 
     form = ImportedForm(request.POST) 
     form.data['foo'] = "newValue" 
     # Now after changing the data, validate it... 
+0

實現'clean_ '喜歡的文檔中:進行更改輸入字段存在並應用驗證測試。這一切都發生在你問'form.is_valid()'時。 –

回答

1

如果表單和模型的匹配很好,然後我會採取的的ModelForm功能優勢。 但大部分不是那麼整齊如此,最典型的時候,我做的事情在這個順序:

  1. 創建一個Django的形式與所有的字段定義
  2. 創建的Django獲取視圖服務於空形式
  3. 創建其用於缺省HTML /形式
  4. 測試空白表單
  5. 創建POST例程調用驗證和保留驗證(錯誤)形式
  6. 修改的HTML模板Django的表單驗證領域
  7. 修改HTML表單服務錯誤信息
  8. 試驗驗證和錯誤消息
  9. 修改POST程序來處理的有效形式,做任何它應該作爲一個結果做(可能涉及重定向和「謝謝」視圖/模板)
  10. 測試一大堆
  11. 讓設計師寬鬆的模板

在真理的設計師會在某個點前面的相對於b的方式參與理論上我只是把它全部作爲一個「白色」來工作,然後再添加所有的花哨的東西。這包括JavaScript驗證(即所有上述)。

+0

然而,這真的很有幫助 - 要麼我沒有完全理解你,要麼我沒有把我的完整問題弄清楚。爲了清楚起見,我更新了問題。謝謝您的幫助! – Joker

0

我最終做了這樣的事情。這是醜陋的,並且可能不這樣做的正確方法,但它的作品...

if request.method == 'POST': 
    try: 
     # Create dictionary from POST data 
     data = { 
        'foo': request.POST['foo'], 
        'foobar': request.POST['foobar'], 
       } 
    except: 
     # Handle exceptions 

    form = ImportedForm(data) 
    if form.is_valid: 
     # Continue to validate and save