为什么此查询 returns 为空?
Why does this query returns empty?
我有一个使用 py2neo 显示组的烧瓶应用程序。我想让 URL 更漂亮,所以我找到了这两篇文章:一篇关于 how to generate slugs and another one on how to create custom converters。我将这些文章结合起来制作了以下代码:
# app/views.py
from flask import Flask, redirect, render_template, url_for
from models import graph, Group
app = Flask(__name__)
from .util import SlugConverter
app.url_map.converters['slug'] = SlugConverter
...
@app.route('/group/<slug:group_name>')
def show_group(group_name):
query = """
MATCH (group:Group)
WHERE group.slug = {group_name}
RETURN group
"""
group = graph.cypher.execute_one(query, group_name = group_name)
if group:
return render_template('group.html', group = group)
else:
return redirect(url_for('show_groups'))
.
# app/util.py
from werkzeug.routing import BaseConverter
import re
import translitcodec
class SlugConverter(BaseConverter):
def to_python(self, value):
pass
def to_url(self, value):
exp = r'[\t !"#$%&\'()*\-/<=>?@\[\\]^_`{|},.]+'
punct_re = re.compile(exp)
delim = u'_'
result = []
for word in punct_re.split(value.lower()):
word = word.encode('translit/long')
if word:
result.append(word)
return unicode(delim.join(result))
创建 slug 和替换 url 没有问题。我遇到的问题是,如果我通过 graph.cypher.execute_one()
传递 query
,它会 returns None
。我不懂为什么。如果我在 NEO4J 网络查看器中使用相同的查询仅替换 {group_name}
例如,"north_carolina"
,它 returns 相关节点。
为什么这个查询 returns 是空的?
SlugConverter.to_python
方法必须 return 您要在视图中使用的实际值。您也许可以将 to_url
值改为 to_python
。然后让 to_url
做 return value
.
我有一个使用 py2neo 显示组的烧瓶应用程序。我想让 URL 更漂亮,所以我找到了这两篇文章:一篇关于 how to generate slugs and another one on how to create custom converters。我将这些文章结合起来制作了以下代码:
# app/views.py
from flask import Flask, redirect, render_template, url_for
from models import graph, Group
app = Flask(__name__)
from .util import SlugConverter
app.url_map.converters['slug'] = SlugConverter
...
@app.route('/group/<slug:group_name>')
def show_group(group_name):
query = """
MATCH (group:Group)
WHERE group.slug = {group_name}
RETURN group
"""
group = graph.cypher.execute_one(query, group_name = group_name)
if group:
return render_template('group.html', group = group)
else:
return redirect(url_for('show_groups'))
.
# app/util.py
from werkzeug.routing import BaseConverter
import re
import translitcodec
class SlugConverter(BaseConverter):
def to_python(self, value):
pass
def to_url(self, value):
exp = r'[\t !"#$%&\'()*\-/<=>?@\[\\]^_`{|},.]+'
punct_re = re.compile(exp)
delim = u'_'
result = []
for word in punct_re.split(value.lower()):
word = word.encode('translit/long')
if word:
result.append(word)
return unicode(delim.join(result))
创建 slug 和替换 url 没有问题。我遇到的问题是,如果我通过 graph.cypher.execute_one()
传递 query
,它会 returns None
。我不懂为什么。如果我在 NEO4J 网络查看器中使用相同的查询仅替换 {group_name}
例如,"north_carolina"
,它 returns 相关节点。
为什么这个查询 returns 是空的?
SlugConverter.to_python
方法必须 return 您要在视图中使用的实际值。您也许可以将 to_url
值改为 to_python
。然后让 to_url
做 return value
.