2011-12-27 22 views
6

Trong khi chạy chương trình tôi đang nhận được thông báo lỗi sauCaught TypeError khi render: __ __init() có một từ khóa bất ngờ lập luận 'use_decimal'

Caught TypeError while rendering: __init__() got an unexpected keyword 
argument 'use_decimal' 

Dưới đây là mã của tôi tôi đang sử dụng jquery 1.6.4

def load_charts(chart_list=None, render_to=''): 
    embed_script = (
     '<script type="text/javascript">\n' 
     'var _chartit_hco_array = %s;\n</script>\n' 
     '<script src="%s" type="text/javascript">\n</script>') 

    if chart_list is not None: 
     if isinstance(chart_list, (Chart, PivotChart)): 
      chart_list = [chart_list] 
     chart_list = [c.hcoptions for c in chart_list] 
     render_to_list = [s.strip() for s in render_to.split(',')] 
     for hco, render_to in izip_longest(chart_list, render_to_list): 
      if render_to: 
       hco['chart']['renderTo'] = render_to 
     embed_script = (embed_script % (simplejson.dumps(chart_list, 
                 use_decimal=True), 
             CHART_LOADER_URL)) 
    else: 
     embed_script = embed_script %((), CHART_LOADER_URL) 
    return mark_safe(embed_script) 
+0

thanx Daniel Roseman để chỉnh sửa – ritvik

+0

Vâng, 'simplejson.dumps' không lấy đối số' use_decimal'. Bạn đã có ấn tượng ở đâu? (Và tôi không biết tại sao bạn nghĩ nó liên quan đến việc bạn đang sử dụng jQuery.) –

+0

@DanielRoseman - chúng tôi đã viết cùng một lúc (mặc dù tôi đã đăng nó như một câu trả lời). Có vẻ như tuy nhiên các tham số được tài liệu ít nhất cho phiên bản 2.1.0 mặc dù! (xem các chỉnh sửa của tôi) – mac

Trả lời

2

chữ ký của simplejson.dumps được (xem documentation):

dumps(obj, skipkeys=False, ensure_ascii=True, 
     check_circular=True, allow_nan=True, cls=None) 

như bạn có thể thấy không có tham số use_decimal ... nhưng bạn đang gọi nó như thế này:

simplejson.dumps(chart_list, use_decimal=True) 

EDIT: Trên thực tế hơn một chút đào lớn lên this other documentation. Có vẻ như thông số use_decimal đã được thêm vào đâu đó dọc theo phiên bản thư viện simplejson ... Tôi sẽ đề xuất nâng cấp phiên bản thư viện của bạn lên phiên bản mới nhất có sẵn sau đó!

+0

Cũng được phát hiện, nhưng OP đã gắn thẻ câu hỏi với 'django' vì vậy tôi đoán họ đang sử dụng phiên bản của simplejson đi kèm với khuôn khổ đó, tức là 2.0.7. –

+0

NOw tôi đang bị bắt TypeError trong khi rendering: Decimal ('51 .8 ') không phải là JSON serializable – ritvik

+0

@ritvik - Vâng, tôi cho rằng nếu bạn cố gắng sử dụng Decimal với một phiên bản của thư viện mà không hỗ trợ nó bạn _will_ nhận được vấn đề. Nhưng dù sao đi nữa, đây là một vấn đề khác, vì vậy tôi đề nghị bạn mở một câu hỏi mới cụ thể về cách sắp xếp số thập phân với phiên bản thư viện đó: Tôi chắc chắn bạn sẽ nhận được nhiều câu trả lời đủ điều kiện hơn tôi có thể cung cấp cho bạn chủ đề cụ thể này! :) – mac

1

Để cứu linh hồn khác, những giờ đau khổ đã chi tiêu.

pip install simplejson 

NB: Điều này nên được thực hiện trong project virtual env.

Các vấn đề liên quan