使用Web.py解码URL参数
读取一个网址,像这样:
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。