0

私のviews.pyのどこかに、私は持っています

def loadFcs(request):
  r = requests.get('a url')
  res = json.loads(r.text)
  #Do other stuff
  return HttpResponse('some response')

これを JavaScript から呼び出すと、loadFcs が呼び出され、おそらくrequests.get が非同期で呼び出されます。そのため、「TypeError at /loadFcs expected string or buffer」が表示され、トレースは次の行を指します

res = json.loads(r.text)

また、何が問題なのかを確認するためにコードを修正しました。

def loadFcs(request):
  r = requests.get('a url')
  res = json.loads(r.text)
  if r == None:
    print 'r is none'
  if r.text == None:
    print 'text is  None'
  #Do other stuff
  return HttpResponse('some response')

「テキストはなし」であることに気付きました。したがって、request.get が同期するようにコードを調整する必要があると思います。r.text に何らかの値が入る前に、メソッドの実行が継続し、return ステートメントがヒットしたと思います。提案?

4

1 に答える 1

0

わかりましたので、pythonコマンドラインで同じことを試してみましたが、サーバーの同じコードでは機能しませんでした。それで、何が問題だったのですか?

どうやら、response.text は、私のサーバーが受信するように設定されていないエンコーディング (UTF8) であるため、単に破棄していたため、null でした。

解決策:response.content(生のバイナリ)を使用してください

于 2013-03-20T17:51:03.670 に答える