0

私は今、Web プロジェクトに基づいて電話でネイティブ アプリを開発するタスクを受け取りました。したがって、サーバーとクライアントの間で通信する最良の方法は json を使用することだと思います。

次に、json形式の結果を返すすべての応答が必要です。しかし現在、Web プロジェクトでは、ほとんどすべてのビューrender_to_responseが次のように使用されています。

ctxt = RequestContext(request,*args)
return render_to_response('XXX.html',ctxt)

次に、次のように render_to_response を書き換えたいので、すべてを新しい関数に変更する必要はありません。

def render_to_response:
  return new HttpResponse(simplejson.dumps(*args), mimetype='text/json'))

明らかに、django でソース コードを変更することはできますが、それは実用的な方法ではありません。他のプロジェクトでも使用する必要があるためです。

または、関数を使用して新しいモジュールを作成し、render_to_response後でこれをインポート できます

from django.shortcuts import render_to_response

しかし、これが可能かどうかはわかりません。

これが機能する場合は、このインポートをすべての.pyファイルに追加する必要がありますが、これは依然として膨大な作業です。

そのため、プロジェクト全体への変更を最小限に抑えた最善の方法が必要です。

4

1 に答える 1

0

returnあなたが持っているものをこれに置き換えてみてください

return HttpResponse(json.dumps(ctxt), content_type="application/json")

別の注意点として、コンテキストを要求しているクライアントがコンテキストを必要としない場合は、コンテキストを返す必要はありません。「成功」のような単純なメッセージを返す方がよい場合があります

もう1つの解決策はdjango-annoying、プロジェクトに含めて@ajax_request 、jsonとして応答するすべてのビューでデコレータを使用することです。

@ajax_request
def my_view(request):
    news = News.objects.all()
    news_titles = [entry.title for entry in news]
    return {'news_titles': news_titles}

ここで例を参照してください-https://bitbucket.org/offline/django-annoying/wiki/Home

于 2013-01-18T07:50:17.060 に答える