New url format in Django 1.9

jape picture jape · Dec 5, 2015 · Viewed 12.8k times · Source

I recently upgraded my Django project to version 1.9.

When I try to run migrate, I am getting the following two errors:

  1. Support for string view arguments to url() is deprecated and will be removed in Django 1.10 (got app.views.about). Pass the callable instead.
  2. django.conf.urls.patterns() is deprecated and will be removed in Django 1.10. Update your urlpatterns to be a list of django.conf.urls.url() instances instead.

Could someone please show me the proper syntax of how to do this? A brief sample of my urls.py is below:

urlpatterns = patterns('',
    url(r'^about/$', 'app.views.about',
        name='about'),
)

urlpatterns += patterns('accounts.views',
    url(r'^signin/$', 'auth_login',
        name='login'),
)

Thank you!

Answer

Lorenzo Peña picture Lorenzo Peña · Dec 5, 2015

Import your views directly, or your views modules:

from apps.views import about
from accounts import views as account_views

Do not use patterns at all, just use a list or tuple:

urlpatterns = [
    url(r'^about/$', about,
        name='about'),
]

urlpatterns += [
    url(r'^signin/$', account_views.auth_login,
        name='login'),
]