我正在构建一个带有“点赞”功能的社交应用程序,我正在使用django-redis来存储每篇帖子的“点赞”数量,如下所示:
from django_redis import get_redis_connection
con = get_redis_connection("default")
con.incr("post" + ":" + id)
这段内容需要翻译的是关于it技术中的django-redis以及django-rest-framework的使用问题。其中,Raw client access文档提供了相关信息。
在我的项目中,我使用django-rest-framework提供api,ListCreateAPIView用来列举所有帖子。通常情况下,它会显示数据库中你想要的任何字段。但现在我的问题是,我想在API中显示来自django-redis的“喜欢”计数,也就是说返回的json数据既包括我的数据库,也包括django-redis。
我已经查看了有关django-rest-framework的源代码。
class ListCreateAPIView(mixins.ListModelMixin,mixins.CreateModelMixin,
GenericAPIView):
"""
Concrete view for listing a queryset or creating a model instance.
"""
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
以及列表方法:
class ListModelMixin(object):
"""
List a queryset.
"""
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
看起来我只能从数据库查询集中获取数据(我使用的是Mysql)。有没有可能通过django-rest-framework从django-redis返回数据?
解决方案: 感谢@Rahul Gupta的回答,我进行了一点小调整以使其更好地运作:
def get_likes(self, obj):
post_id = obj.id
post_like = get_redis_connection("default")
likes = post_like.get("post"+":"+str(post_id))
if likes == None:
return 0
else:
likes = likes.decode('utf-8')
return likes