【发布时间】:2022-11-10 05:08:57
【问题描述】:
我目前正在使用多个 query_params 进行 DJango 搜索,因为我使用 Sentry 我发现有时当您搜索具有百分比的内容时会触发问题:
“100% 天然” “100% 独特” “50% 等等等等”
Sentry:查询字符串中未处理的无效十六进制编码。
这是在 oauth 库中标记的
if INVALID_HEX_PATTERN.search(query): raise ValueError('Invalid hex encoding in query string.')当前的搜索代码允许像这样传递任何 query_param:
re_path(r"^search/?$", search_system, name="search")在视图内部我确实有这个:
query = request.query_params.get("query") query = query.replace("%20", " ") if query else None我试图将 %20 替换为一个空间,但有时它会发生,有时它不会,所以它随机发生,我不知道我是否做错了什么,或者实际上问题是:
is there anything i could do to avoid triggering this alert without doing anything in sentry? for example like cleaning up the data like a form提前致谢。
为避免此问题,我尝试设置查询
replace("%20", " "),我最好的猜测是当您将“百分比+空格”彼此相邻时触发错误,因此网址看起来像
search/100%25%20natural在 python 中应该类似于“100% natural”,但正如我所说,有时它会触发,有时它不会。
【问题讨论】:
-
您的数据似乎是 URL 编码的(对 URL 无效的字符被“转义”)也许 this other question 会有所帮助?
标签: python django search parameters