我有一个 Django 项目,其中有一个搜索页面,该页面通过 POST 获取输入并重定向到/search/<search string>/
,该页面呈现结果。百分号 (%) 在搜索中用作通配符(tes%er 返回 testuser、tester 等,然后 url 看起来像这样:)example.com/search/tes%25er/
并且在 Django 开发服务器上一切正常。如果我在 url 中手动写入 tes%er,它会自动更改为 tes%25er。
现在我正在使用 mod_wsgi 在 Apache 服务器上进行部署,当我的搜索页面重定向到example.com/search/tes%er/
我收到服务器错误:Bad Request. Your browser sent a request that this server could not understand.
. 如果我手动将“25”添加到 url,就像编码的 % 符号一样,它看起来就像开发服务器一样工作正常。
Apache 有没有办法自动转义 %-sign 并创建一个有效的 url,理解 % unscaped 还是我需要在构建 url 的搜索页面中做丑陋的黑客攻击?(我宁愿不做这种丑陋的黑客行为,因为这样用户就不能手动将 % 添加到 url 并让它工作)。
编辑:将查询从搜索页面发送到搜索 url 的代码。
if form.is_valid():
if 'search_user' in request.POST:
q = request.POST['search_user']
return redirect('/search/'+q)