GET 多语言网站搜索
GET search in multilanguage site
我在我的 web2py 应用程序中包含了一个搜索表单,格式如下:
myapp/controller/search?query=myquery
但是,出于安全原因,web2py 会自动将空格和非字母数字字符替换为下划线,这对于纯英文网站是可以的,但是
使用重音符号的语言的障碍。例如,搜索“áéíóú”returns 五个下划线。
这可以通过在搜索表单中使用 POST 而不是 GET 来解决,但是用户将无法为结果添加书签。
有没有办法解决这个问题?
提前致谢。
这是我过去使用过的一个想法:
- 使用post提交查询
- 生成唯一字符串(例如 youtube:https://www.youtube.com/watch?v=jX3DuS2Ak3g)
- 将查询与该字符串相关联并存储为 key/value 对 session/app state/db(取决于您希望它存在多长时间)
- 将用户重定向到那个
如果您不想占用额外的 memory/space,因为它们在某些情况下往往会增长很多,您可以将步骤 2-3 替换为将字符串加密为您可以在之后解密的内容。您可以在中间件中执行此操作 class,这样它对您的应用逻辑是透明的。
这是人们在处理 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')
éíóú
当您在后端从请求中检索它时,您将必须执行取消引用。
还有一些其他帖子可能会有帮助 - urlencode implementation and unicode ready urls
我在我的 web2py 应用程序中包含了一个搜索表单,格式如下:
myapp/controller/search?query=myquery
但是,出于安全原因,web2py 会自动将空格和非字母数字字符替换为下划线,这对于纯英文网站是可以的,但是 使用重音符号的语言的障碍。例如,搜索“áéíóú”returns 五个下划线。
这可以通过在搜索表单中使用 POST 而不是 GET 来解决,但是用户将无法为结果添加书签。
有没有办法解决这个问题?
提前致谢。
这是我过去使用过的一个想法:
- 使用post提交查询
- 生成唯一字符串(例如 youtube:https://www.youtube.com/watch?v=jX3DuS2Ak3g)
- 将查询与该字符串相关联并存储为 key/value 对 session/app state/db(取决于您希望它存在多长时间)
- 将用户重定向到那个
如果您不想占用额外的 memory/space,因为它们在某些情况下往往会增长很多,您可以将步骤 2-3 替换为将字符串加密为您可以在之后解密的内容。您可以在中间件中执行此操作 class,这样它对您的应用逻辑是透明的。
这是人们在处理 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')
éíóú
当您在后端从请求中检索它时,您将必须执行取消引用。
还有一些其他帖子可能会有帮助 - urlencode implementation and unicode ready urls