2013-04-17 65 views
1

我試圖找出架構提供以下應用:從模板傳遞對象,查看使用Django

  1. 用戶呈現的表。
  2. 每個表格單元格都有幾個字段,用戶將填寫。
  3. 有一個常規提交按鈕:單擊所有輸入數據時(以及每個單元格基於輸入值的一些計算數據)應傳遞給一個Django視圖。

這裏有以下幾個問題:

  1. 我可以組織數據結構爲一組的方式,每個對象都會對應一個表格單元格的對象,而主對象,這將最終被傳遞給Django視圖,將會是這些對象的集合嗎?

  2. 如果是這樣,如何將主對象從模板傳遞到使用Django進行查看?

謝謝。

+1

你可以發佈一些html,所以我們可以想象你現在擁有什麼。 無論如何,如果你點擊提交你的看法應該看到所有的字段使用'request.POST' –

+0

謝謝。我沒有一個完整的HTML,但我開始做這件事之前我正試圖弄清楚架構,因此我的問題。基本上我問的是:1.是否可以在HTML/JS中創建一個對象,其成員將包含來自這些字段的數據? 2.是否有可能以任何方式將該對象傳遞給python視圖? – jazzblue

回答

1

1.是否可以在HTML/JS中創建一個對象,其成員將包含來自這些字段的數據?

您不能在html/JS中創建對象,但是您可以構建代碼以顯示或請求來自Django中某個對象的數據。

比方說,你有一個模型美孚

class Foo(models.Model): 
    GENDER = (
     ('F', 'Female'), 
     ('M', 'Male'), 
    ) 
    name = models.CharField(max_length=150) 
    gender = models.CharField(max_length=1, choices=GENDER) 

而且你的模板看起來像這樣

<body> 
<form action="?" method="post"> 
<table> 
    <tr> 
     <td>Name</td> 
     <td><input type="text" name="name" maxlength="150" /></td> 
    </tr> 
    <tr> 
     <td>Gender</td> 
     <td> 
      <select name="gender"> 
       <option value="F">Female</option> 
       <option value="M">Male</option> 
      </select> 
     </td> 
    </tr> 
</table> 
<input type="submit"> 
</form> 
</body> 

如果您填寫字段,然後點擊提交,那麼你就可以處理數據你的看法。

def add_foo(request): 
    if request.method == "POST": # Check if the form is submitted 
     foo = Foo() # instantiate a new object Foo, don't forget you need to import it first 
     foo.name = request.POST['name'] 
     foo.gender = request.POST['gender'] 
     foo.save() # You need to save the object, for it to be stored in the database 
     #Now you can redirect to another page 
     return HttpResponseRedirect('/success/') 
    else: #The form wasn't submitted, show the template above 
     return render(request, 'path/to/template.html') 

最後一點也回答了問題2,我想。希望這可以幫助。

+0

謝謝!在上述評論之後,我一直在思考這個問題,並得出結論:將不同的HTML名稱分配給表單的字段,然後使用request.POST在視圖中檢索它們對我來說是正確的解決方案。 – jazzblue