Django 1.9 中的新 url 格式

New url format in 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'),
)

谢谢!

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

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

第 2 点,使用列表,所以你的代码将转换为

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

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

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