20

我最近将我的 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'),
)

谢谢!

4

2 回答 2

26

直接导入您的视图,或您的视图模块:

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'),
]
于 2015-12-05T17:51:26.057 回答
4

您应该删除视图名称周围的引号。所以你的代码会是这样的

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

第 2 点,使用列表,因此您的代码将转换为

urlpatterns = [
        url(r'^about/$', app.views.about, #without quote!
            name='about'),
    ]
于 2015-12-05T17:48:16.433 回答