[Django]-Django 2.0 path error ?: (2_0.W001) has a route that contains '(?P<', begins with a '^', or ends with a '$'

161πŸ‘

βœ…

The new path() syntax in Django 2.0 does not use regular expressions. You want something like:

path('<int:album_id>/', views.detail, name='detail'),

If you want to use a regular expression, you can use re_path().

re_path(r'^(?P<album_id>[0-9])/$', views.detail, name='detail'),

The old url() still works and is now an alias to re_path, but it is likely to be deprecated in future.

url(r'^(?P<album_id>[0-9])/$', views.detail, name='detail'),
πŸ‘€Alasdair

23πŸ‘

Just to add to what @alasdair mentioned, I added re_path as part of the include and it works fine. Here is an example

Add re_path to your import (for django 2.0)

from django.urls import path, re_path

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^$', home, name='home'),

]
πŸ‘€Stryker

9πŸ‘

Instead of using β€˜re_path’ you can also use ”(empty string) as the first argument of your path(). I have used it and it worked for me.

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.index,name='index'),
]
πŸ‘€Akash Gupta

5πŸ‘

url() is deprecated in newer version of django. So instead of url() use re_path() in your urls file as follows:

from django.urls import path, re_path
from . import views

urlpatterns = [
    #url(r'^(?P<album_id>[0-9]+)/$', views.detail, name='detail'),
    path('', views.index, name='index'),
    re_path(r'^(?P<album_id>[0-9])/$', views.detail, name='detail'),
]
πŸ‘€P S

3πŸ‘

If it doesn’t work add this code to yoursite\urls.py inside urlpatterns:

path('music/<int:album_id>/', views.detail, name="detail"),
πŸ‘€Hamza Naji

2πŸ‘

Use an empty string ” instead of β€˜/’ or r’^$’. It works like a charm. Code is as below:

from django.urls import path, re_path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', home, name='home'),
]
πŸ‘€DILIP

0πŸ‘

In django 2.0 version primary key write this way…

urls.py

from django.urls import path

from . import views


urlpatterns = [
    path('', views.course_list),
    path('<int:pk>/', views.course_detail),
]

Leave a comment