如何在URL参数中传递带问号的URL?

6 投票
2 回答
2122 浏览
提问于 2025-04-16 14:23

我用这一行代码把一个 urlmain_iduser_tag_list 传给处理程序:

self.response.out.write("""

<a href="/tc?url=%s&main_id=%s&user_tag_list=%s" title="edit tag set">edit tag set</a>

""" %
(item.url, main_id, item.tag_list))

这段代码运行得很好,但如果传入的 url(第一个参数)里已经有一个问号,我就无法在目标处理程序里获取到 main_id

main_id = self.request.get("main_id")

反而会出现错误

m = Main.get_by_id(int(main_id))
ValueError: invalid literal for int() with base 10: ''

有没有什么办法可以解决这个问题呢?

2 个回答

1

urllib.quote 这个工具应该能帮你解决这个问题。

9

你只需要使用 urllib.quote 这个功能。

>>> import urllib
>>> urllib.quote('http://www.google.com?q=Zombie+Apocalypse')
'http%3A//www.google.com%3Fq%3DZombie%2BApocalypse'

所以:

urllib.quote(item.url)

撰写回答