使用Web.py解码URL参数

0 投票
1 回答
555 浏览
提问于 2025-04-17 14:28

读取一个网址,像这样:

example.com/product/xy&z

urls = ('/product/(.*)', product)

在产品类中,当我通过GET请求读取这个网址时,我会提取出产品ID(xy&z),然后用它来创建数据库查询。有些ID里面包含了'&'这个符号,当我在Python中接收到这个值时,它已经被转义了。我尝试过很多方法都无法把它恢复成原来的样子,以便我能正确地运行查询。以下这些方法都不管用:

product = product.replace("&", "&")
product = HTMLParser.unescape.__func__(HTMLParser,product)

在Web.py或者Python中,最佳的做法是什么?我该如何自己诊断这个问题呢?谢谢!

1 个回答

0

我从这个盒子里拿到了这些产品的ID,看看下面的代码。

import web

urls = (
    "/product/(.*)", "Product"
)


class Product:
    def GET(self, product_id):
        return product_id


app = web.application(urls, globals())


if __name__ == "__main__":
    #app.run()
    assert web.__version__ == "0.37"
    b = app.browser()
    b.open('/product/xy&z')
    assert b.status == 200
    assert "xy&z" in b.data
    assert "xy&z" not in b.data
    b.open('/product/xy&z')
    assert "xy&z" in b.data

请提供一个失败的链接,这个链接没有返回想要的产品ID。

撰写回答