python - 具有多个url匹配的Django url配置

标签 python django

在我们的一个 Django 应用程序中,我们为 View 定义了多个 url。

第一个 URL 将一般特征与 pk 和第二个匹配组匹配。 第二个 URL 匹配一个带有 pk 的子特征。

在这两个 url 之间定义了更多的 url,所以一次看到它们并不容易。或者,例如,子功能将有自己的 url.py。

# old urls.py
url(r'^(?P<pk>\d+)/', views.b),
url(r'^subfeature/', views.a),

一段时间后 pk 中也允许使用字母,所以我们现在必须将 \d+ 更改为 [^/]+

# new urls.py
url(r'^(?P<pk>[^/]+)/', views.b),
url(r'^subfeature/', views.a),

现在子特征因为 url 没有正确匹配而中断,'subfeature' 在第一个 url 中匹配为 pk

如何在更改 url 正则表达式时避免破坏其他 url?

最佳答案

对此没有统一的答案。任何使 url 更通用的更改都可能破坏它后面的其他 url。

在这种情况下,您可以交换 url,这样 subfeature/ 将匹配子功能 url,而任何其他 url 将失败并匹配 views.b:

url(r'^subfeature/', views.a),
url(r'^(?P<pk>[^/]+)/', views.b),

关于python - 具有多个url匹配的Django url配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40023708/

相关文章:

python - 在 PyTorch 中沿给定轴进行洗牌

python - 为什么 Django 的信号处理默认使用弱引用进行回调?

django - 从查询集中的 jsonfield 中选择值

python - 将 django-import-export 与基于类的 View 一起使用

python - 在 Elastic Beanstalk 上使用 Supervisor 和 Django 将 Celery 作为守护进程运行

python - 如何在django中设置celeryconfig文件

python - 我可以从 MSSql 服务器获取数据并通过一些 python 脚本将其上传到应用程序引擎吗?

python - 在服务器中为两个 django 应用程序运行两个 celery worker

python - 列表列表更改意外地反射(reflect)在子列表中

javascript - 将javascript json对象转换为字符串