Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine Webapp2从路由URL提取命名参数(没有请求,只有URL)_Google App Engine_Routes_Webapp2 - Fatal编程技术网

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
。是的,我不认为这是现成的。不管怎么说,很高兴以上这些对你有用。