我刚开始使用Python,Flask和Neo4j。我正在努力通过py2neo将参数从url传递到密码查询。
我已经尝试了来自github上的论坛,教程和示例的许多建议,但没有设法使它起作用,并希望有人可以为我指明正确的方向。
这是views.py
#Single Comic
@app.route('/comic/<issue>/')
def comic(issue):
# Get comic
issue = comics.get_issue(issue)
return render_template('issue.html', issue=issue)
这是我的models.py(如果我将问题编号硬编码到正确显示的查询中)
class comics:
def __init__(self, issue):
self.issue = issue;
def get_issue(issue):
query = '''
MATCH (c:Comic) WHERE c.Issue=$issue
RETURN c.Issue as issue, c.Title as title
'''
return graph.run(query)
这是issue.html模板
{% extends "base.html" %}
{% block content %}
{% for row in issue %}
<h1>{{ row.issue }}: {{ row.title }} </h1>
<img src="/static/comics/{{ row.issue }}.png" alt="{{ row.title }}">
{% endfor %}
{% endblock %}
当我尝试浏览www.mydomain.com/comic/1时,出现“参数丢失:预期参数:问题”错误
非常感谢
答案 0 :(得分:0)
你快到了。
对于Cypher替换,您只需要将参数作为关键字参数传递给graph.run
。因此,您最终会得到类似的东西:
class comics:
def __init__(self, issue):
self.issue = issue;
def get_issue(issue):
query = '''
MATCH (c:Comic) WHERE c.Issue=$issue
RETURN c.Issue as issue, c.Title as title
'''
return graph.run(query, issue=issue)
您似乎希望变量从封闭范围中被吸收,但这是一个远程查询,其中语句模板和参数都通过网络传输。因此,驱动程序不执行替换,而是在Cypher引擎中的服务器上进行。为此,需要明确提供所有内容。