2008-12-25 99 views
5

我在一個模板中有兩種完全不同的形式。如何在一個視圖中處理它們?我如何區分哪些表單已提交?我怎樣才能使用前綴來實現這一點?或者,寫一些單獨的視圖更好?

問候
CHRISS如何在一個視圖中處理兩個表單?

回答

5

就個人而言,我會使用一個視圖來處理各種形式的POST。

在另一方面,你可以使用指示哪些形式使用

<form action="/blog/" method="POST"> 
    {{ blog_form.as_p }} 
    <input type="hidden" name="form-type" value"blog-form" /> <!-- set type --> 
    <input type="submit" value="Submit" /> 
</form> 

... 

<form action="/blog/" method="POST"> 
    {{ micro_form.as_p }} 
    <input type="hidden" name="form-type" value"micro-form" /> <!-- set type --> 
    <input type="submit" value="Submit" /> 
</form> 

有了這樣一個視圖中隱藏輸入元素:

def blog(request): 
    if request.method == 'POST': 
     if request.POST['form-type'] == u"blog-form": # test the form type 
      form = BlogForm(request.POST) 
      ... 
     else: 
      form = MicroForm(request.POST) 
      ... 

    return render_to_response('blog.html', { 
     'blog_form': BlogForm(), 
     'micro_form': MicroForm(), 
    }) 

...但再一次,我想每個表單一個視圖(即使視圖只接受POST)比嘗試執行上述操作更簡單。

0

如果兩種形式完全不同,那麼通過兩種不同的觀點來處理它們肯定不會有什麼壞處。否則,您可能會使用'隱藏輸入元素'技巧zacherates已觸及。或者,您始終可以爲每個元素分配一個唯一的名稱,並在視圖中區分表單是基於此提交的。

4

像阿亞茲說,你應該給唯一的名稱,形成提交按鈕

<form action="." method="post"> 
...... 
<input type="submit" name="form1"> 
</form> 


<form action="." method="post"> 
...... 
<input type="submit" name="form2"> 
</form> 


#view 

if "form1" in request.POST: 
    ... 
if "form2" in request.POST: 
    ... 
相關問題