2017-04-11 14 views
0

私はAJAX呼び出しを行い、オブジェクトの辞書を返すようにしたいと思います。どのようにデータを返そうとしても、例外がスローされます。私が知る限り、応答データはJSON形式ではないためにのみ存在します。Djangoを使ってAJAX呼び出しから辞書を返します

すべてのヘルプは本当に

def populateSources(request): 
    if request.is_ajax(): 
     try: 
      org = Organization.objects.get(pk=int(request.GET.get('org_id'))) 
      std_source_columns = StandardizedSourceColumn.objects.all() 
      std_sources = StandardizedSource.objects.all() 

      # Standardized Tables API Client 
      std_tables_api_client = standardizedtablescli.ApiClient() 
      std_tables_api_client.host = os.environ.get('STANDARDIZED_ENDPOINT') 
      std_tables_api = standardizedtablescli.StandardizedtablesApi(std_tables_api_client) 

      org_std_sources = std_tables_api.get_standardized_tables_by_id(org.id) 
      ready_tables = std_tables_api.get_ready_raw_tables(org.id) 

      ready_table_mapping = dict() 
      ready_table_names = [] 

      for table in ready_tables: 
       ready_table_names.append(table) 


      for key, value in org_std_sources.iteritems(): 
       curr_source = StandardizedSource.objects.filter(name=key) 
       if len(value['standard_mappings']) == 0: 
        if key in ready_table_names: 
         ready_table_mapping[curr_source] = False 
       else: 
        ready_table_mapping[curr_source] = True 

      json_response = {} 
      json_response['result'] = ready_table_mapping 
      return HttpResponse(
       json.dumps(json_response), 
       content_type="application/json" 
      ) 
     except: 
      return HttpResponse(
       json.dumps("error"), 
       content_type="application/json" 
      ) 
+0

例外はありますか? –

+4

try..exceptブロックを削除します。あなたはエラーが何であるか知っているでしょう。また、コードのような大きなチャンクで包括的な例外をキャッチすることは、プログラミングの練習になります。 – karthikr

答えて

0

を参照してくださいはい、助けてくれてありがとう!私はオブジェクトの辞書を作成していたのでシリアライザを使う必要がありました。オブジェクトが適切にシリアル化されていないため、json_responseは正しい形式でなく、そのためにエラーが発生していました。

+0

素晴らしい!私の答えがあなたを助けたら、それを正解と記して、それに賛成投票をすることができます。 –

関連する問題