2011-05-24 46 views
0

我有以下的模板,它同時具有「添加」和「刪除」按鈕:變量「名」

<tr> 
    <td>Position</td> 
    <td>{{ form.position }}<input type="submit" value="add" , name='add'/></td> 
</tr> 
<tr> 
    <td> </td> 
    <td> 
     {% for position in positions %} 
     {{ position}}<input type="submit" value="Delete", name="delete-position.{{ position }}"/> 
     {% endfor %} 
    </td> 
</tr> 

我將如何構建views.py功能找到name刪除提交按鈕的值?我目前有:

try: 
     request.POST['add'] 
     positions.append(request.POST['position'])   
     return render_to_response('registration/getting_started_info1.html', {'form': form, 'positions': positions}, context_instance = RequestContext(request)) 
    except: 
     if 'delete-position' in request.POST: 
      positions.remove(### how to get name of Delete submit? ###) 
      return render_to_response('registration/getting_started_info1.html', {'form': form, 'positions': positions}, context_instance = RequestContext(request)) 

此外,有沒有更好的方式來構建視圖/模板,所以我可以用一個if...else,而不是try...except

回答

0

保存會話中的位置。

0

你的嘗試抓住有點奇怪。您可能應該將刪除請求提交給其他視圖。

但至於如何可以得到delete-position增值經銷商,很容易:

def delete(request): 
    if request.method == "POST": 
     for key in request.POST.keys(): 
      if key.startswith('delete-position'): 
       positions.remove(request.POST[key]) 
1

首先,你應該這樣做:

if request.method == "POST": 
    if 'add' in request.POST.keys(): 
     positions.append(...) 
     return render_to_response(...) 
    else: 
     for k, v in request.POST.items(): 
      if k.startswith('delete-position'): 
       positions.remove(k) 
       return render_to_response(...) 

這應該與你在問什麼幫助。 ..但是,我不確定是否最簡單的方法來做你想做的事情。