我有一个bottle网站,可以通过getJSON()
请求加载内容。
为了处理在导航网站时发出的正常请求,getJSON()
请求发送到Python脚本,该脚本以JSON格式转储结果。
推送/弹出状态用于在加载动态内容时更改URL。
为了在直接访问URL时处理相同的动态内容,例如重新加载页面,我创建了一个条件,它加载瓶子模板并将路径传递给getJSON()
请求,然后加载动态内容。
@route('/')
@route('/<identifier>')
def my_function(identifier='index'):
# do things with certain paths using if and elif conditionals
#
# handle the getJSON() path
elif value_passed_to_getJSON.startswith("part_one/"):
# get the path after / , in this example it should be 'part_two'
my_variable = value_passed_to_getJSON.split("/")[1]
# perform database query with my_variable
response.content_type = 'application/json'
return dumps(cursor)
# and later for direct URL access, eg reloading the page, this essentially routes the query
# back to the getJSON() path handler above.
elif identifier == "part_one/part_two":
return template('site_template',value_passed_to_getJSON="/" + identifier)
当标识符类似part_one
但不是上面的格式part_one/part_two
时,此设置正在运行,在这种情况下会引发404。
另一项测试,如果我简单地说:
elif identifier == "part_one/part_two":
return "hello"
我还在GET part_two
上收到了一封带有Firebug错误的404。
我想知道这是否是因为初始路由@route('/<identifier>')
只包含一个值和正斜杠?
是否需要额外的通配符来处理路径的两个部分?
演示解决方案(以下评论)
@route('/')
@route('/<identifier:path>')
@view('my_template.tpl')
def index(identifier='index'):
if identifier == 'part_one/part_two':
return "hello"
else:
return "something standard"