当サイトには、フルブラウザ、モバイルブラウザ、カスタムiPhoneアプリからアクセスできます。ロジックはクライアントに関係なくほとんど同じであるため、すべてのタイプのリクエストを処理するために同じビューを使用しています。しかし、私たちのすべての見解の下部には、次のようなものがあります。
if request.is_mobile():
return render_to_response('foo/bar/baz_mobile.html', context)
elif request.is_api():
return json.dumps(context)
else:
return render_to_response('foo/bar/baz.html', context)
明らかにそれを行うためのより良い方法があります:)
ビューにコンテキストディクショナリを返してもらい、応答のレンダリング方法を決定するデコレータでそれらをラップすることを考えました。あるいは、クラスベースのビューでできることがあるかもしれません。
どうしますか?