Django 2 URL <int:>表示方式不符合预期

时间:2018-06-25 16:25:25

标签: regex path python-3.5 django-urls django-2.0

过去一个星期,我一直在将平台从django 1.11迁移到django 2,直到今天,当我尝试更新自己的URL时,都没有问题。我有以下三行代码:

1. url(r'^track/(?P<track_id>[0-9]+)/user/playlists', views.music),
2. path(r'track/<int:track_id>/user/playlists', views.music),
3. re_path(r'^track/(?P<track_id>[0-9]+)/user/playlists',views.music),
  1. 在django 1.11中正常工作的原始行。
  2. 为替换第1行而创建的新行。我删除了插入符号'^',并替换了RegEx。
  3. 我现在正在使用的那条线,因为它工作正常。

这里的问题是,当我使用第2行时,我的测试失败了,但是当我使用第3行时,它通过了。什么可能导致此现象?

PS:失败的测试只是将14传递给URL并检查响应的测试。响应应为200,但应为404。实际上,我在music方法中尝试了pdb,但是测试没有停止就结束了,这意味着它甚至没有进入。

self.check_response('/track/%d/user/playlists/' % 14)

1 个答案:

答案 0 :(得分:0)

由于'r',您仍在使用2中的正则表达式。

使它像这样:

path('track/<int:track_id>/user/playlists', views.music),

更多详细信息,请here.