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

标签 python django rest titan nosql

大家好,祝你有美好的一天!我想知道如何使用 django-rest-framework 和我的 nosql 对象 orm 创建 REST。例如,我有bulbflow,它连接到我的图形数据库Titan。 Bulbflow 允许您以 ORM 风格进行常规查询,如下所示:

MyNosqlobject.objects.all()

我想要的是能够通过 JavaScript 的 REST 接口(interface)访问我的对象,但 MyNosqlobject 不是通常的 django 模型。它实际上是图顶点的代理。

最佳答案

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

简而言之,Django Rest Framework 中的许多很酷的功能都需要 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

我无法弄清楚如何使用(或者是否可以使用)路由器,因此我必须将其添加到网址列表中:

from .api_views import NoSQLViewSet

urlpatterns = patterns('',
    url(r'^api/v1/yourObjName/', NoSQLViewSet.as_view(), name='api-nosql'),
)

但之后,一切都运行良好,包括 HTML View 。

我对泰坦一无所知,但在您的情况下,您可能需要做的就是将我的示例中的 get_queryset 定义为

class NoSQLViewSet(generics.ListAPIView):

   serializer_class = TitanSerializer

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

然后专注于让 TitanSerializer 工作。

希望这有帮助。

关于python - 使用 Django 和 Titan 为 nosql 创建 REST 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32104940/

相关文章:

java - 使移动应用程序中的内容动态化

python - 在pygame中创建一个随机门

python - 根据两列从得分最高的组中选择行

python - django 如何处理多个 memcached 服务器?

python - 在 Electron 中运行/停止 Django 开发服务器

Java Android 应用程序和 Node.js + Express.js API

python - 如何使用 python 在 Windows 64 位中调用 32 位 exe?

python - 在没有关于排序函数的先验知识的情况下合并 Python 中的有序列表

python - Django 模板 : How to display block of HTML based on a boolean field in model

java - 如何使用 getPathInfo() 映射 Servlet 以获取额外的路径信息