我正在使用Pyramid创建URL缩短器。我将短网址和长网址存储在数据库中。现在,我的问题是如何创建从短网址到长网址的动态链接。 这两个网址都正确构建。
我是否使用config.add_route?如果是这样,我该怎么做?有没有更好的办法? 我可以这样做吗?
config.add_route(short_url, long_url)
答案 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-examples和https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/views.html#using-a-view-callable-to-do-an-http-redirect中的示例。