如果您需要字典,则意味着您必须更好地设计您的应用程序。不要在你的观点中做重要的事情,也不要在 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()
希望能帮助到你。