【问题标题】:BaseInFilter separates values by comma. What if a value has a comma?BaseInFilter 用逗号分隔值。如果一个值有逗号怎么办?
【发布时间】:2020-10-14 14:41:18
【问题描述】:

我正在使用BaseInFilter,效果很好。我可以拥有像/producs/?title=some_title,some_other_title 这样的网址。但是如果标题有逗号怎么办?我可以以某种方式对其进行编码吗?或者是我使用 id 的唯一方法(由于 SEO 和可读性,我真的不想这样做)。谢谢。

【问题讨论】:

  • 是的,你编码它%2c,但你可以简单地多次添加相同的密钥,所以?title=some_title&title=some_other_title

标签: django django-rest-framework django-filter


【解决方案1】:

我能以某种方式对其进行编码吗?

您可以使用percent-encoding [wiki] 对其进行编码。逗号编码为%2c:

/products/?title=<b>some_title%2csome_other_title</b>

但是,您也可以多次重复相同的键:

/products/?title=<b>some_title&amp;title=some_other_title</b>

并在 Django 端获取title 的值列表:

request.GET.<b>getlist('title')</b>

【讨论】:

  • 如果some_titlesome,_title 怎么办?然后我需要some%2c_title,some_title2,但它不起作用
  • @Tomas:不,从那时起,逗号也被解释为简单的逗号,因为 URL 不能包含逗号。这就是为什么您最好多次提及同一个参数的 原因之一,因为这样您就可以为一个值写入所有可能的字符(以百分比编码)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
相关资源
最近更新 更多