我有一个使用 Apache 托管的 Django 应用程序。我正忙于使用 django restframework 来创建 API,但我遇到了 URL 问题。例如,我有一个这样的 URL:
url(r'path/to/endpoint/(?P<db_id>.+)/$', views.PathDetail.as_view())
如果我尝试访问此 url 但不包含尾部斜杠,它将不匹配。如果我像这样在末尾添加问号:
url(r'path/to/endpoint/(?P<db_id>.+)/?', views.PathDetail.as_view())
这匹配有和没有尾部斜杠。唯一的问题是,如果使用尾部斜杠,它现在会包含在我看来的 db_id 变量中。所以当它搜索数据库时,id 不匹配。我不想遍历我的所有 View 并使用字符串处理从我的 url 变量中删除尾部斜杠。
所以我的问题是,在不将尾部斜线包含在发送到 View 的参数中的情况下,使 url 匹配带尾部斜线和不带尾部斜线的最佳方法是什么?
最佳答案
您的参数模式是 .+
,这意味着 1 个或多个任何字符,包括 /
。难怪斜线包含在其中,为什么不呢?
如果您希望模式包含 /
以外的任何内容,请改用 [^/]+
。如果您希望模式在末尾包含除斜线以外的任何内容,请使用.*[^/]
作为模式。
关于python - Django URLs - 尾部斜杠被添加到变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21986570/