2017-10-21 8 views
1

私はDjangoでオンラインストアを作成しようとしています。ビューファイルでは、プロダクトIDがユーザーが送信したものと一致するかどうかを確認するために、リストをループしています。しかし、私は "MultiValueDictKeyError"を取得し続けます。私はこれを解決する方法はありますか?DjangoでPost Valueを取得するときのMultiValueDictKeyError

VIEWSファイル

def index(request): 
products = { 
    "items" : items 
} 
return render(request, "app_main/index.html", products) 

def buy(request): 

for item in items: 
    if item['id'] == int(request.POST['i_id']): ##<<--THIS IS WHERE IT 
                   ERRORS 
    amount_charged = item['price'] * int(request.POST['quantity']) 

try: 
    request.session['total_charged'] 
except KeyError: 
    request.session['total_charged'] = 0 

try: 
    request.session['total_items'] 
except KeyError: 
    request.session['total_items'] = 0   

request.session['total_charged'] += amount_charged 
request.session['total_items'] += int(request.POST['quantity']) 
request.session['last_transaction'] = amount_charged 

HTMLファイル

<table> 
    <tr> 
     <th>Item</th> 
     <th>Price</th> 
     <th>Actions</th> 
    </tr> 
    <tr> 
    {% for i in items %} 
    <td>{{ i.name }}</td> 
    <td>{{ i.price }}</td> 
    <td> 
     <form action='/buy' method='post'> 
     {% csrf_token %} 
     <select name='quantity'> 
     <option>1</option> 
     <option>2</option> 
     <option>3</option> 
     <option>4</option> 
     </select> 
     <input type='hidden' name='{{ i.id }}'/> 
     <input type='submit' value='Buy!' /> 
     </form> 
    </td> 
    </tr> 
    {% endfor %} 
    </table> 

答えて

2

それi_idはテンプレートで宣言していないので、あなたは変更する必要があります。

<input type='hidden' name='{{ i.id }}'/> 

to;

<input type='hidden' name="i_id" value='{{ i.id }}'/> 
+0

です。ありがとうございました! –

関連する問題