使用金字塔为URL缩短器添加路由

时间:2018-07-02 17:04:05

标签: python pyramid url-shortener

我正在使用Pyramid创建URL缩短器。我将短网址和长网址存储在数据库中。现在,我的问题是如何创建从短网址到长网址的动态链接。 这两个网址都正确构建。

我是否使用config.add_route?如果是这样,我该怎么做?有没有更好的办法? 我可以这样做吗?

config.add_route(short_url, long_url)

1 个答案:

答案 0 :(得分:2)

您将配置一条路由。第一个参数是路由的名称,第二个参数是用于匹配请求的模式。

config.add_route('short_url', '/{short_url}')
config.scan()

然后,您将添加一个用于处理请求的视图,获取short_url的matchdict值,在数据库中查找,然后返回重定向响应。

@view_config(route_name='short_url')
def url_expander(request):
    short_url = request.matchdict['short_url']
    # verify short_url is a valid format you define before doing a db query
    # your db query code to find long_url
    # SELECT long_url FROM t WHERE short_url=short_url
    # handle case of no match in db
    return HTTPFound(location=long_url)

请参阅文档https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/urldispatch.html#routing-exampleshttps://docs.pylonsproject.org/projects/pyramid/en/latest/narr/views.html#using-a-view-callable-to-do-an-http-redirect中的示例。