我道歉,因为Django的思维方式对我来说仍然很陌生。我试图生成一个非常简单的页面,只是列出了使用Neo4j和Django(1.9.7)的简单密码查询的所有结果,我使用Python Neo4j驱动程序从Django访问数据库。然而,我陷入困境并且已经达到了我只是盲目地尝试的程度,因此我想要一些关于我想要实现的基础知识的指示/建议。
models.py
from django.views.generic.listimport ListView
from neo4j.v1 import GraphDatabase, basic_auth
from django.db import models
# Connect to DB
driver=GraphDatabase.driver("foo1",auth=basic_auth("foo2","foo3"))
session=driver.session()
class Stuff(models.Model):
query = "MATCH (t:Time) return t"
results=session.run(query)
# Sanity check -> This just shows that the database and query both work
for foo in results:
print foo
break
def __str__(self):
return results
views.py
from django.views.generic.list import ListView
from .models import Stuff
# I assume that I should be using a ListView here (as I was trying to get a queryset or similar from my models).
class IndexView(ListView):
template_name = 'index.html'
def get_queryset(self):
fooList = []
for record in Stuff.objects.get():
fooList.append(record)
return fooList
index.html(未经过测试,因为我还未设法将此设为“显示”)
{% block body %}
{% if fooList %}
<h1>Woot!</h1>
{% endif %}
{% endblock %}
以上这些内容显然不起作用并抱怨Stuff
没有任何objects
,但我完全迷失了如何继续(因为我无法找到任何好的示例/文档在Django中使用这个驱动程序。)
答案 0 :(得分:1)
session
对象的Documentation运行方法状态
run(statement, parameters=None, **kwparameters)
它返回StatementResult
对象,如文档here
因此,根据文档,没有objects
属性,因此.objects.get()
方法不存在。
在example中显示了在返回的StatementResult
中执行访问记录的正确方法,如下所示:
for record in result:
print("%s %s" % (record["title"], record["name"]))
所以在你的情况下你可能想要这样做:
for record in Stuff:
fooList.append(record)
答案 1 :(得分:0)
您可以编写一个平面REsTFul API与前端进行通信,可以在React Angular2中编写以转储和显示您的数据。首先,你可以使用DRF(Django rest Framework),然后一切都会发生在你的views.py和serializers.py以及models.py中。为什么要避免使用Django模板,查询加载可能会影响您的应用程序顺利运行。