regex - Django url正则表达式不匹配
问题描述
我正在尝试为这些示例实现正则表达式 url:
本地主机:8000/curvas?parcela=298
或者
本地主机:8000/curvas?parcela=7&fk_fecha=234
我尝试使用以下正则表达式路径从 django rest 框架(文档)实现类似的 url 正则表达式:
re_path(r'curvas(?P<parcela>.+)', views.CurvasFilter.as_view()),
它可以工作,但过于宽松,例如 url 也匹配正则表达式:
本地主机:8000/curvas?random=298
如何更改正则表达式以仅匹配所需的 url 参数?
解决方案
问号 ( ?
) 之后的部分是查询字符串[wiki]。它不是路径的一部分,因此您无法使用path(..)
or捕获它re_path(..)
。无论如何,这也可能不是一个好主意,因为参数的顺序通常是随机的,因此匹配的正则表达式?foo=4&bar=2
可能难以使用?bar=2&foo=4
.
路径是这样的:
re_path(r'^curvas/$', views.CurvasFilter.as_view())
您可以访问parcela
with的值self.request.GET['parcela']
。例如:
class CurvasFilter(ListView):
model = Curvas
def get_queryset(self):
return super().get_queryset().filter(
parcela=self.request.GET['parcela']
)
推荐阅读
- javascript - React Native TVOS:如何禁用空闲计时器?
- python - 使用 Python 子进程运行 DRI_PRIME 命令
- sql - 动态转换数组元素的类型以匹配 PostgreSQL 查询中的某些表达式类型
- c# - 如何取消和暂停/恢复 Web 客户端异步下载?
- group-by - groupBy 使用 pyspark-sql-dataframe 的条件逻辑
- r - GAM 中的估计自由度是如何确定的?
- python - TypeError: read_csv() 采用 0 到 1 个位置参数,但给出了 2 个
- .net - 为什么当系统的 CPU 使用率较低时,应用程序池的 CPU 会受到限制?
- ios - 如何比较 INStartCallContactResolutionResult 对象以进行单元测试?
- html - 如何在不干扰 td 的情况下设置宽度