django模板表单中的变量'name'

时间:2011-05-24 18:15:12

标签: forms django-templates django-views

我有以下模板,其中包含“添加”和“删除”按钮:

<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

3 个答案:

答案 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])