Новый формат url в Django 1.9

недавно я обновил свой проект Django до версии 1.9.

когда я пытаюсь запустить migrate, Я получаю следующие две ошибки:

  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.

может кто-нибудь показать мне правильный синтаксис того, как это сделать? Краткий образец моего urls.py ниже:

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

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

спасибо!

2 ответов


импортируйте свои представления напрямую или ваши модули представлений:

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

не используйте patterns вообще, просто используйте список или кортеж:

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

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

вы должны удалить кавычки вокруг имени видом. Таким образом, ваш код будет таким

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

пункт 2, используйте списки, поэтому ваш код преобразуется в

urlpatterns = [
        url(r'^about/$', app.views.about, #without quote!
            name='about'),
    ]