Django URL - 尾部斜杠被添加到变量值

Dav*_*own 3 python django django-urls

我有一个用Apache托管的django应用程序.我正忙着使用django restframework来创建API,但我遇到了URL问题.举个例子,我有一个这样的URL:

url(r'path/to/endpoint/(?P<db_id>.+)/$', views.PathDetail.as_view())
Run Code Online (Sandbox Code Playgroud)

如果我尝试访问此URL并且不包含尾部斜杠,则它将不匹配.如果我在最后添加一个问号,如下所示:

url(r'path/to/endpoint/(?P<db_id>.+)/?', views.PathDetail.as_view())
Run Code Online (Sandbox Code Playgroud)

这匹配使用和不使用尾部斜杠.唯一的问题是如果使用尾部斜杠,它现在会包含在我视图中的db_id变量中.因此,当它搜索数据库时,id不匹配.我不想通过字符串处理来查看我的所有视图并从我的url变量中删除尾部斜杠.

所以我的问题是,使用和不使用尾部斜杠进行url匹配的最佳方法是什么,而不包括发送到视图的参数中的尾部斜杠?

Rem*_*ich 5

参数的模式是.+,表示任何字符中的一个或多个,包括/.难怪斜线包含在其中,为什么不呢?

如果您希望模式包含任何内容/,请[^/]+改用.如果希望模式在末尾包含除斜线以外的任何内容,请使用.*[^/]该模式.