request.POST.getlist在Django中返回无列表?

时间:2013-01-15 09:10:34

标签: django

我有一个像这样的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))

2 个答案:

答案 0 :(得分:5)

选择后包含[]因为您正在获取数组表单请求

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

这将解决你的问题

答案 1 :(得分:3)

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

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