使用Python和web2py将URL中的%20替换为下划线

2024-07-02 11:29:53 发布

您现在位置:Python中文网/ 问答频道 /正文

在这个代码中我有一个'args'值,它是'标题。标题'时,此值将显示在我的URL中。在

如何使url变成这样:“index.html/something\u某物而是它现在的显示方式,即:index.html/something%20something". 在

 def livesearch():
    '''Auto completes the search query'''
    partialstr = request.vars.partialstr
    query = db.listing.title.like('%'+partialstr+'%')
    titles = db(query).select(db.listing.ALL)
    items = []

    for title in titles:
        items.append(DIV(A(title.title, _id="resultLiveSearch", _href=URL('search', args='%s' % title.title))))

    return TAG[''](*items)

我试着做到:

^{pr2}$

我原以为会管用,但没用,我做错什么了?我该怎么解决这个问题?在

谢谢。在


Tags: 代码url标题dbsearchindextitlehtml
2条回答

%20是单个空白的替换,因此在将空格传递给URL之前,应该用下划线替换空格:

title.title.replace(' ', '_')

详细说明FB的答案:URL()调用URLlib.引用在URL的args部分,它对空格和其他特殊字符进行%-转义。[\w./-]未被引用。(如果你在源代码中跟踪,这种情况会发生在gloon.html.URL。)

当使用生成的URL时(也就是说,生成新请求的URL),参数是不加引号的。所以(在您的例子中)像“foo bar”这样的标题在URL中将被编码为foo%20bar,但是在请求.args调用URL时。在

当你做你自己的编码(在本例中,把“foo bar”改为“foo_ubar”),你会得到“foo_ubar”请求.args需要你自己解码。在

相关问题 更多 >