辞書が必要な場合は、アプリケーションをより適切に設計する必要があることを意味します。ビューや Tastypie メソッドで重要なことを行わないでください。共通の機能を持つようにリファクタリングします。
原則として、ビューは小さくする必要があります。15行以下。これにより、コードが読みやすく、再利用可能になり、テストが容易になります。
わかりやすくするために例を示します。その Tastypie メソッドで Like オブジェクトを作成し、シグナルを送信する必要があるとします。
class AlbumImageResource(ModelResource):
def like_method(self, request, **kwargs):
# Do some method checking
Like.objects.create(
user=request.user,
object=request.data.get("object")
)
signals.liked_object(request.user, request.data.get("object"))
# Something more
ただし、ビューでその動作を再利用する必要がある場合は、別の関数で因数分解するのが適切です。
# myapp.utils
def like_object(user, object):
like = Like.objects.create(
user=request.user,
object=request.data.get("object")
)
signals.liked_object(request.user, request.data.get("object"))
return like
これで、API メソッドとビューから呼び出すことができます。
class AlbumImageResource(ModelResource):
def like_method(self, request, **kwargs):
# Do some method checking
like_object(request.user, request.data.get("object")) # Here!
そしてあなたの見解では...
# Your view
def test(request, object_id):
obj = get_object_or_404(Object, id=object_id)
like_object(request.user, obj)
return HttpResponse()
それが役に立てば幸い。