Ana*_*nas 7 api django rest neo4j neo4django
我正在尝试在后端创建一个带有Neo4j和Django的REST API.
问题是,即使我使用Neo4Django的Django模型,我也不能使用像Tastypie或Piston这样的框架,通常将模型序列化为JSON(或XML).
对不起,如果我的问题令人困惑或不清楚,我是webservices的新手.
谢谢你的帮助
编辑:所以我开始使用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"}
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
api.py文件:
class NodeResource (ModelResource): #it doesn't work with Resource neither
class meta:
queryset= Node.objects.all()
resource_name = 'node'
Run Code Online (Sandbox Code Playgroud)
urls.py文件:
node_resource= NodeResource()
urlpatterns = patterns('',
url(r'^api/', include(node_resource.urls)),
Run Code Online (Sandbox Code Playgroud)
models.py文件:
class Node(models.NodeModel):
p1 = models.StringProperty()
p2 = models.StringProperty()
Run Code Online (Sandbox Code Playgroud)
我建议不要直接通过您的应用程序传递Neo4j REST API响应.您不仅不会控制这些数据格式的结构,因为它们不断发展和弃用(他们这样做),但您将暴露数据库层的不必要内部.
除了Neo4Django之外,您还可以考虑其他几种选择.Neomodel是为Django设计的另一个模型层,旨在像内置的ORM一样工作; 你也可以选择py2neo提供的原始OGM层,这可能会有所帮助,但不是Django特有的.
值得记住的是,Django及其插件是围绕传统的RDBMS而不是图形数据库设计的,因此这些解决方案都不是完美的.无论您选择什么,您都可能需要进行大量的转换工作来创建应用程序的API.
Django-Tastypie 允许使用 NoSQL 数据库创建 REST API,如http://django-tastypie.readthedocs.org/en/latest/non_orm_data_sources.html中所述。
原则是使用tastypie.resources.Resource而不是tastypie.resources.ModelResource特定于 RDBMS 的,然后必须重新定义主要函数,以便提供具有所需参数的 JSON。
因此,我采用了链接中给出的示例,对其进行了修改并使用 Neo4j REST Client for Python 来获取数据库的实例并执行请求,它的工作方式非常出色。
感谢您的所有回复:)
| 归档时间: |
|
| 查看次数: |
2201 次 |
| 最近记录: |