使用 get_url() 或 url() 访问端点的正确方法是什么?
What is the correct way to access endpoints using get_url() or url()?
我正在使用 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' )
我收到的错误是:
[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) 您没有向我们展示您的代码,因此我们无法告诉您它有什么问题,但这里有一个 get_url
的工作示例。 (注意 get_url
是 Bottle
class 的一个方法,所以你必须这样使用它。)
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) 你的最后一个问题,
How am i supposed to access the endpoints?
让我怀疑这是不是 XY problem(因为我不确定 "access" 在这里意味着什么)。
如果是(换句话说:如果,既然你知道如何成功调用 get_url
,你 仍然 不能做你正在尝试的事情做),那么请解决这个问题,然后简单地问一个说明你的目标的新问题;我们会尽力提供帮助。
希望对您有所帮助!
我正在使用 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' )
我收到的错误是:
[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) 您没有向我们展示您的代码,因此我们无法告诉您它有什么问题,但这里有一个 get_url
的工作示例。 (注意 get_url
是 Bottle
class 的一个方法,所以你必须这样使用它。)
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) 你的最后一个问题,
How am i supposed to access the endpoints?
让我怀疑这是不是 XY problem(因为我不确定 "access" 在这里意味着什么)。
如果是(换句话说:如果,既然你知道如何成功调用 get_url
,你 仍然 不能做你正在尝试的事情做),那么请解决这个问题,然后简单地问一个说明你的目标的新问题;我们会尽力提供帮助。
希望对您有所帮助!