Google app engine Webapp2从路由URL提取命名参数(没有请求,只有URL)
我在我的应用程序中使用的路线如下所示:Google app engine Webapp2从路由URL提取命名参数(没有请求,只有URL),google-app-engine,routes,webapp2,Google App Engine,Routes,Webapp2,我在我的应用程序中使用的路线如下所示: Route(r'/thing//foo',handler=ThingFoo,name=“thing foo”) 这用于使用('thing-foo',some\u id=“something”)生成url,并将其返回给他们存储的用户。 然后,在另一个请求中,用户发布之前返回给他们的url,在那里需要对其进行解析 我想从提供的url中提取模式的值,其方式与路由器将值传递给RequestHandler的get/post方法的方式类似,但似乎缺少相关文档 有类似于
Route(r'/thing//foo',handler=ThingFoo,name=“thing foo”)
这用于使用('thing-foo',some\u id=“something”)生成url,并将其返回给他们存储的用户。
然后,在另一个请求中,用户发布之前返回给他们的url,在那里需要对其进行解析
我想从提供的url中提取
模式的值,其方式与路由器将值传递给RequestHandler的get/post方法的方式类似,但似乎缺少相关文档
有类似于下面的东西吗
route, some_id = webapp2.extract_uri(the_url)
(当然,我可以使用正则表达式直接提取值,但这似乎不是很枯燥)
下面是我想做的一个例子
def image_url(request, image_blob_key):
if image_blob_key:
return request.url_for('image', resource=image_blob_key, _full=True)
else:
return None
def blob_key_from_image_url(image_url):
# Do something here to calculate the blob_key from the URL.
return blob_key
在我的应用程序的一部分中,image_url是从blob_键计算出来的,并传递给用户。稍后,如果他们(例如)想要删除图像,他们会在POST请求中传回url,我想从中提取blob_键以便删除它。我通常使用这种样式 路由器:
Route('/auth/<provider>/call', handler='handlers.AuthHandler:meo', name='meo')
我通常使用这种风格 路由器:
Route('/auth/<provider>/call', handler='handlers.AuthHandler:meo', name='meo')
也许这样的事情对你有用:
import webapp2
# somewhere in a request handler:
route = self.app.router.build_routes.get('my-route-name')
match = route.regex.match(the_url)
args, kwargs = webapp2._get_route_variables(match, route.defaults.copy())
# do something with args and kwargs, e.g.
# thing = kwargs['thing-foo']
源代码:
老实说,我只需将blob_键传递给模板,用户可以在模板中删除图像,这样我就可以事先构建一个URL,例如
uri_for('delete-image', image_key=some_blob_key)
也许这样的事情对你有用:
import webapp2
# somewhere in a request handler:
route = self.app.router.build_routes.get('my-route-name')
match = route.regex.match(the_url)
args, kwargs = webapp2._get_route_variables(match, route.defaults.copy())
# do something with args and kwargs, e.g.
# thing = kwargs['thing-foo']
源代码:
老实说,我只需将blob_键传递给模板,用户可以在模板中删除图像,这样我就可以事先构建一个URL,例如
uri_for('delete-image', image_key=some_blob_key)
但这只适用于实际的HTTP请求。我不想为请求调用请求处理程序,只是从URL提取参数。如果不清楚的话,很抱歉。但这只适用于实际的HTTP请求。我不想为请求调用请求处理程序,只是从URL提取参数。对不起,如果不清楚的话。谢谢,这正是我要找的。将图像获取url和删除url同时传递给客户端并不理想-我更希望传递一个“id”字符串,以便在客户端(iOS应用程序)上获取和删除图像。我想最好的解决方案是使用HTTP的DELETE方法(而不是GET),但这可能需要对路由等进行一些处理。我不确定webapp2是否支持开箱即用的PUT和DELETE。FWIW webapp2确实支持HTTP方法:在处理程序端,您只需执行
def PUT(self)
或def DELETE(self)
啊,对不起,我想我现在就知道了。您希望有一个URL模式匹配,但运行不同的代码,例如put
和delete
。是的,我不认为这是现成的。不管怎样,很高兴上面的内容对你有用。谢谢你,这正是我想要的。将图像获取url和删除url同时传递给客户端并不理想-我更希望传递一个“id”字符串,以便在客户端(iOS应用程序)上获取和删除图像。我想最好的解决方案是使用HTTP的DELETE方法(而不是GET),但这可能需要对路由等进行一些处理。我不确定webapp2是否支持开箱即用的PUT和DELETE。FWIW webapp2确实支持HTTP方法:在处理程序端,您只需执行def PUT(self)
或def DELETE(self)
啊,对不起,我想我现在就知道了。您希望有一个URL模式匹配,但运行不同的代码,例如put
和delete
。是的,我不认为这是现成的。不管怎么说,很高兴以上这些对你有用。