是/某事的瓶子路线也处理/东西/其他?

时间:2013-12-31 06:53:30

标签: python bottle

我有一个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"

0 个答案:

没有答案