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

标签 python django django-urls

我有一个使用 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/

相关文章:

Django 模型字段 getter/setter

python - 让 Django 接受带有无限参数的 url

python 如何知道子进程是否正在等待输入

python - Flask-Migrate 模型中的枚举类有问题

Python for 循环以不满足条件结束

python - pip install MySQL-python 出错

python - 如何在 Heroku 上正确安装 PyICU?

Django 如何在模板中使用 block

python - 动态扩展 urlpatterns

python - 我可以通过序列化将文件(HDF5 文件)存储在另一个文件中吗?