Django 2 URL <int:> нотация работает не так, как ожидалось - PullRequest
0 голосов
/ 25 июня 2018

Я перенес платформу с django 1.11 на django 2 на прошлой неделе без проблем, вплоть до сегодняшнего дня, когда я пытался обновить свои URL-адреса.У меня есть эти 3 строки кода:

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.На самом деле, я попробовал pdb в методе music, но тест завершился, не останавливаясь на этом, а это значит, что он даже не вошел.

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

1 Ответ

0 голосов
/ 10 августа 2018

Вы по-прежнему используете регулярное выражение в 2 из-за 'r'.

Сделай так:

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

Более подробную информацию можно найти здесь .

...