Regex Django url正则表达式不匹配

Regex Django url正则表达式不匹配,regex,python-3.x,django-rest-framework,Regex,Python 3.x,Django Rest Framework,我正在尝试为以下示例实现正则表达式url: 本地主机:8000/curvas?parcela=298 或 本地主机:8000/curvas?parcela=7和fk_fecha=234 我尝试使用以下正则表达式路径从django rest framework()实现类似的url正则表达式: re_path(r'curvas(?P<parcela>.+)', views.CurvasFilter.as_view()), re_路径(r'curvas(?P.+)',views.Curv

我正在尝试为以下示例实现正则表达式url:

本地主机:8000/curvas?parcela=298

本地主机:8000/curvas?parcela=7和fk_fecha=234

我尝试使用以下正则表达式路径从django rest framework()实现类似的url正则表达式:

re_path(r'curvas(?P<parcela>.+)', views.CurvasFilter.as_view()),
re_路径(r'curvas(?P.+)',views.CurvasFilter.as_view()),
它可以工作,但它太过允许,例如url也与正则表达式匹配:

本地主机:8000/curvas?随机=298


如何更改正则表达式以仅匹配所需的url参数?

问号(
)后面的部分是。它不是路径的一部分,因此不能使用
path(..)
re_path(..)
捕获它。此外,这可能不是一个好主意,因为参数的顺序通常是随机的,因此匹配
?foo=4&bar=2
的正则表达式可能难以处理
?bar=2&foo=4

因此,路径是:

re_path(r'^curvas/$', views.CurvasFilter.as_view())
您可以使用
self.request.GET['parcela']
访问
parcela
的值。例如:

class CurvasFilter(ListView):
    model = Curvas

    def get_queryset(self):
        return super().get_queryset().filter(
            parcela=self.request.GET['parcela']
        )
类CurvasFilter(ListView):
模型=曲线
def get_queryset(自我):
返回super().get_queryset().filter(
parcela=self.request.GET['parcela']

)
parcela
是查询字符串的一部分,而不是路径,因此您不能使用
url(…)
re_path(…)
path(…)
来捕获它。谢谢,所以我将使用下面的正则表达式:r'^curvas?$,这似乎更具限制性,不是吗?(它还要求url带有问号)@David1212k:不,问号也不是路径的一部分,它应该是
^curvas/$
(或者
^curvas$
,因此没有问号)。注意,这里问号被解释为正则表达式量词(“零或一”)。