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

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


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'),


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_pathurlpatterns = [    path('admin/', admin.site.urls),    re_path(r'^$', home, name='home'),]


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'),]