2013-02-01 29 views
1

내 앱에 대한 체크 아웃 양식을 작성 중이지만 제출할 때 장고는 MultiValueDictKeyError 예외를 반환합니다. 여기 MultiValueDictKeyError는 어떻게 처리해야합니까?

Traceback: 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/home/mats-invasion/projects/f4l/f4l/live/views.py" in show_checkout 
    33.   if postdata['submit'] == 'place_order': 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/utils/datastructures.py" in __getitem__ 
    258.    raise MultiValueDictKeyError("Key %r not found in %r" % (key, self)) 

Exception Type: MultiValueDictKeyError at /orders/checkout/ 
Exception Value: "Key 'submit' not found in <QueryDict: {u'delivery_address': [u'klab Telecom House,6th floor'], u'billing_address': [u'klab 6th telecom house'], u'billing_city': [u'kigza'], u'phone': [u'+2500855598432'], u'billing_name': [u'mar'], u'credit_card_type': [u'VISA'], u'credit_card_expire_month': [u'01'], u'credit_card_number': [u'4007000000027'], u'delivery_name': [u'mar'], u'credit_card_cvv': [u'567'], u'credit_card_expire_year': [u'2016'], u'csrfmiddlewaretoken': [u'UGu4G75x2CxPFfnUdGSnVZzueedNxtu6'], u'delivery_city': [u'kigali'], u'email': [u'[email protected]']}>" 

는 양식이다 :

여기
def show_checkout(request): 
    if order.is_empty(request): 
     cart_url = urlresolvers.reverse('order_index') 
     return HttpResponseRedirect(cart_url) 
    if request.method == 'POST': 
     postdata = request.POST.copy() 
     form = CheckoutForm(postdata) 
     if form.is_valid(): 
      response = checkout.process(request) 
      order_number = response.get('order_number',0) 
      error_message = response.get('message','') 
      if order_number:    
       request.session['order_number'] = order_number 
      if postdata['submit'] == 'place_order': 
       reciept_url = urlresolvers.reverse('checkout_reciept') 
       return HttpResponseRedirect(reciept_url) 
    else: 
     form = CheckoutForm() 
    context = { 
     'form':form, 
    } 
    return render_to_response('checkout/checkout.html',context,context_instance=RequestContext(request)) 

가가 .. 어떤 도움이 감사

<input type="submit" value="Place order" class="submit" /> 

, 내 템플릿에 일을

+0

정확한 HTML 전송 값을 쓰려고 했습니까 : 'value = "place_order"'? – danihp

답변

4
이 변경

것입니다 귀하의 제출 입력이 submit 인 이름으로 지정하십시오. 그렇지 않으면 게시물 데이터에 들어 가지 않습니다.

<input type="submit" value="Place order" class="submit" name="submit" /> 

또한 값 'Place order'하지 'place_order' 것이다.

+0

고마워요, tht 일했다. –

+0

도움이되는 대답. –

관련 문제