Новый формат url в Django 1.9
Недавно я обновил проект Django до версии 1.9.
Когда я пытаюсь запустить migrate
, я получаю следующие две ошибки:
-
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.
-
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'),
)
Спасибо!
Ответы
Ответ 1
Импортируйте свои представления напрямую или ваши модули просмотров:
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'),
]
Ответ 2
Вы должны удалить кавычки вокруг имени просмотров.
Таким образом, ваш код будет таким.
urlpatterns = patterns('',
url(r'^about/$', app.views.about, #without quote!
name='about'),
)
Пункт 2, используйте списки, поэтому ваш код преобразуется в
urlpatterns = [
url(r'^about/$', app.views.about, #without quote!
name='about'),
]