2

我有一个这样的html模板:

<table border="1" align="center">

{% for result in result %}
<tr>
<td><input type="checkbox" name="choice" id="choice{{ forloop.counter }}" value="{{ choice }}" /></td>
<td><label for="choice{{ forloop.counter }}">{{ choice }}</label><br /></td>
<td>{{ result.file_name }}</td>
<td>{{ result.type }}</td>
<td>{{ result.size }}</td>
<td>{{ result.end_date }}</td>
<td>{{ result.source }}</td>
{% endfor %}
</tr>
</table>
{{ c }}
<h4><a href="/delete_files/">Delete File</a></h4>

result variable生成自:

def uploaded_files(request):
    log_id = request.user.id
    b = File.objects.filter(users_id=log_id, flag='F') #Get the user id from session .delete() to use delete
    return render_to_response('upload.html',  {'result': b}, context_instance=RequestContext(request))  

这是我尝试从模板中选择值的地方:

def delete_files(request):
    log_id = request.user.id
    choices = request.POST.getlist('choice') #Get the file name from the as a list
    for i in choices:
        File.objects.filter(users_id=log_id, file_name=i).update(flag='D')
    return render_to_response('upload.html', {'c': choices}, context_instance=RequestContext(request))
4

2 回答 2

5

选择后包括 [] 因为您收到数组表单请求

choices = request.POST.getlist('choice[]')

这将解决你的问题

于 2013-01-15T09:27:22.737 回答
3

正如 Rohan 在评论中提到的,您在模板中没有<form>标签,并且似乎只是假设单击普通<a>链接将提交一些数据。这根本不是它的工作原理:如果你想从输入元素提交数据,它们需要在 a 内<form>,你需要适当地设置该action表单,并且你需要使用<input type="submit">(or button) 而不是链接提交它.

顺便说一下,这是基本的 HTML,而不是 Django。

于 2013-01-15T11:01:10.603 回答