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

ローハンがコメントで述べたように、テンプレートにはタグがなく、通常のリンクをクリックすると何らかのデータが送信<form>されると単純に想定しているようです。<a>それはまったくその仕組みではありません: 入力要素からデータを送信する場合、それらは 内にある必要があり、そのフォームの を適切に<form>設定する必要があり、リンクではなく(または) を使用して送信する必要があります。 .action<input type="submit">button

ちなみに、これは基本的な HTML であり、Django ではありません。

于 2013-01-15T11:01:10.603 に答える