代码之家  ›  专栏  ›  技术社区  ›  cdonts

在多语言网站中进行GET搜索

  •  1
  • cdonts  · 技术社区  · 8 年前

    我在web2py应用程序中包含了一个搜索表单,格式如下:

    myapp/controller/search?query=myquery
    

    然而,出于安全原因,web2py会自动用下划线替换空格和非字母数字字符,这对于只使用英语的网站来说是可以的,但是 使用重音符号的语言的障碍。例如,搜索“”将返回五个下划线。

    这可以通过在搜索表单中使用POST而不是GET来解决,但这样用户就无法对结果添加书签。

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

    提前谢谢。

    2 回复  |  直到 8 年前
        1
  •  1
  •   fips    8 年前

    下面是我过去使用过的一个想法:

    1. 使用post提交查询
    2. 生成唯一字符串(例如youtube: https://www.youtube.com/watch?v=jX3DuS2Ak3g )
    3. 将查询与该字符串关联,并作为键/值对存储在session/app-state/db中(取决于您希望它存活多长时间)
    4. 将用户重定向到

    如果您不想占用额外的内存/空间,因为它们在某些情况下会增长很多,那么可以用将字符串加密为稍后可以解密的内容来代替步骤2-3。您可以在中间件类中执行此操作,以便对应用程序的逻辑透明。

        2
  •  1
  •   Community ƒernando Valle    7 年前

    这是人们在处理url时面临的一个普遍问题。 您可以使用urllib中的quote/quote_plus模块来规范化字符串-

    例如,从您建议的字符串-

    >>> print  urllib.quote('éíóú')
    %C3%A9%C3%AD%C3%B3%C3%BA
    >>> print  urllib.unquote('%C3%A9%C3%AD%C3%B3%C3%BA')
    éíóú
    

    当您从请求在后端检索它时,您必须执行unquote。

    还有其他一些帖子可能会有帮助- urlencode implementation unicode ready urls