使用get_url()或url()访问端点的正确方法是什么?

时间:2018-09-20 14:50:36

标签: python bottle

我正在使用Bottle。 例如,我已经定义了几条路由及其相应的视图功能

/log/<page>
/showlogs

我应该如何访问端点?以下是相关的视图功能:

@app.route( '/log/<page>' )
def log( page ):

@app.route( '/showlogs' )
def showlogs():

使用get_url访问这些路由的正确方法是什么?我尝试:

get_url( 'log', page=page )
get_url( 'showlogs' )

iam收到的错误是:

[Sun Sep 23 00:35:21.013955 2018] [wsgi:error] [pid 13159] [remote 45.77.155.110:50978]   File "/usr/lib/python3.6/site-packages/bottle.py", line 766, in get_url
[Sun Sep 23 00:35:21.013971 2018] [wsgi:error] [pid 13159] [remote 45.77.155.110:50978]     location = self.router.build(routename, **kargs).lstrip('/')
[Sun Sep 23 00:35:21.013975 2018] [wsgi:error] [pid 13159] [remote 45.77.155.110:50978]   File "/usr/lib/python3.6/site-packages/bottle.py", line 403, in build
[Sun Sep 23 00:35:21.013978 2018] [wsgi:error] [pid 13159] [remote 45.77.155.110:50978]     if not builder: raise RouteBuildError("No route with that name.", _name)
[Sun Sep 23 00:35:21.013982 2018] [wsgi:error] [pid 13159] [remote 45.77.155.110:50978] bottle.RouteBuildError: ('No route with that name.', 'log')

为什么get_url抱怨显然没有路线使用该名称?!

1 个答案:

答案 0 :(得分:1)

(1)您尚未向我们展示您的代码,因此我们无法告诉您它有什么问题,但这是get_url的有效示例。 (请注意,get_urlBottle类的方法,因此您必须照此使用。)

from bottle import Bottle

app = Bottle()

@app.route('/log/<page>')
def handle_log(page):
    return ['your page was: {}'.format(page)]

@app.route('/showlogs')
def handle_showlogs():
    return ['showing the logs...']

print app.get_url('/showlogs')  # prints "/showlogs"
print app.get_url('/log/<page>', page='123')  # prints "/log/123"
print app.get_url('nope')  # raises RouteBuildError, as expected

(2)您的最后一个问题,

  

我应该如何访问端点?

让我怀疑这是否是XY problem(因为我不确定“访问”在这里意味着什么)。

如果是这样(换句话说:如果现在您知道如何成功调用get_url,则您 still 无法做您想做的事情),然后请解决此问题,然后再提出一个说明您目标的新问题;我们将尽力提供帮助。

希望有帮助!