【发布时间】:2013-06-04 14:15:48
【问题描述】:
我正在尝试在后端使用 Neo4j 和 Django 创建一个 REST API。
问题是,即使我有使用 Neo4Django 的 Django 模型,我也不能使用像 Tastypie 或 Piston 这样通常将模型序列化为 JSON(或 XML)的框架。
对不起,如果我的问题令人困惑或不清楚,我是网络服务的新手。
感谢您的帮助
编辑:所以我从 Tastypie 开始,并按照本页 http://django-tastypie.readthedocs.org/en/latest/tutorial.html 上的教程进行操作。我正在寻找在浏览器中显示 Neo4j JSON 响应,但是当我尝试访问 http://127.0.0.1:8000/api/node/?format=json 时,我得到了这个错误:
{"error_message": "'NoneType' object is not callable", "traceback": "Traceback (most recent call last):\n\n File \"/usr/local/lib/python2.6/dist-packages/tastypie/resources.py\", line 217, in wrapper\n response = callback(request, *args, **kwargs)\n\n File \"/usr/local/lib/python2.6/dist-packages/tastypie/resources.py\", line 459, in dispatch_list\n return self.dispatch('list', request, **kwargs)\n\n File \"/usr/local/lib/python2.6/dist-packages/tastypie/resources.py\", line 491, in dispatch\n response = method(request, **kwargs)\n\n File \"/usr/local/lib/python2.6/dist-packages/tastypie/resources.py\", line 1298, in get_list\n base_bundle = self.build_bundle(request=request)\n\n File \"/usr/local/lib/python2.6/dist-packages/tastypie/resources.py\", line 718, in build_bundle\n obj = self._meta.object_class()\n\nTypeError: 'NoneType' object is not callable\n"}
这是我的代码:
api.py 文件:
class NodeResource (ModelResource): #it doesn't work with Resource neither
class meta:
queryset= Node.objects.all()
resource_name = 'node'
urls.py 文件:
node_resource= NodeResource()
urlpatterns = patterns('',
url(r'^api/', include(node_resource.urls)),
models.py 文件:
class Node(models.NodeModel):
p1 = models.StringProperty()
p2 = models.StringProperty()
【问题讨论】:
-
“我不能使用像 Tastypie 或 Piston 这样通常将模型序列化为 JSON(或 XML)的框架”。当你说你不能使用这些框架时,为什么不呢?你遇到什么问题? (我不熟悉 Neo4J,但您的问题看起来需要更多细节。)
-
我创建的模型基于 Neo4Django 框架,该框架依赖于 python 的 neo4j REST 客户端。因此,当对数据库进行查询时,我通常得到的是 JSON ! (见docs.neo4j.org/chunked/milestone/rest-api-transactional.html)
-
为什么不直接调用 Neo4j rest api 呢?在我看来,无论如何您都在尝试充当对该 api 的调用的包装器(如果我错了,请纠正我),因此您应该尝试返回从 neo4j 获得的 JSON。
-
是的,对 neo4j 的一些查询是通过 REST API 进行的。实际上,我正在考虑这些框架,因为 AFAIK,它们允许创建结构化的 REST API(不是吗?),所以我不必自己做这项工作
标签: django api rest neo4j neo4django