我有以下模板,其中包含“添加”和“删除”按钮:
<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 :(得分: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(...)
这应该有助于您提出的要求......但是,我不确定这是否是您尝试做的最简单的方法。
答案 1 :(得分:0)
保存会话中的职位。
答案 2 :(得分: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])