用Django和Titan为nosql创建REST的最佳方法是什么?

2024-09-28 14:59:07 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好,祝你今天愉快!我想知道,如何使用django REST框架和nosql对象orm来创建REST。例如,我有bulbflow,它连接到我的图形数据库Titan。Bulbflow允许您以如下格式进行常见的查询:

MyNosqlobject.objects.all()

我想要的是能够从javascript通过REST接口访问我的对象,但是MyNosqlobject不是通常的django模型。它实际上是图形垂直性的代理。在


Tags: 对象django框架rest数据库图形objects格式
1条回答
网友
1楼 · 发布于 2024-09-28 14:59:07

我必须做类似的事情,在我的例子中,为dynamoDB表创建一个API,但是我认为这个解决方案可以应用于任何NoSQL对象,假设它是可序列化的。例如,如果您有一个python Dict对象。在

简言之,Django Rest框架中的许多很酷的功能都需要Django模型,但是没有Django模型,您仍然可以做很多事情。在

下面是创建所有对象的“列表”的示例。我正在硬编码一个数组来说明这个问题,但希望这能让它变得清楚

from rest_framework import generics
from rest_framework import serializers

class NoSQLSerializer(serializers.BaseSerializer):
   def to_representation(self, obj):
      # If you don't have a json serializable object
      # you can do the transformations here
      return obj

class NoSQLViewSet(generics.ListAPIView):

   serializer_class = NoSQLSerializer

   def get_queryset(self):
     if self.request.user.is_anonymous():
        return None

     # This is just an example, In a real NoSQL database
     # you can just return the python representation of the 
     # object
     obj_list = [
       { 'name':'foo', 'type':1 },
       { 'name':'bar', 'type':2 },
       { 'name':'foobar', 'type':1 },
     ]

     return obj_list

我还不知道如何使用(或是否可以使用)路由器,因此我不得不将其添加到url列表中:

^{pr2}$

但是在那之后,所有的工作都很好,包括HTML视图。在

我对Titan一无所知,但在您的例子中,您需要做的就是将get_queryset定义为

class NoSQLViewSet(generics.ListAPIView):

   serializer_class = TitanSerializer

   def get_queryset(self):
       return MyNosqlobject.objects.all()

然后专注于让泰坦系列化器工作。在

希望这有帮助。在

相关问题 更多 >