Django Error: Your URL pattern is invalid. Ensure that urlpatterns is a list of url() instances

Django Error: Your URL pattern is invalid. Ensure that urlpatterns is a list of url() instances

升级到 Django 1.10 后,我 运行 python manage.py runserver:

出现以下错误
?: (urls.E004) Your URL pattern ('^$', 'myapp.views.home') is invalid. Ensure that urlpatterns is a list of url() instances.
HINT: Try using url() instead of a tuple.

我的urlpatterns如下:

from myapp.views import home

urlpatterns = [
    (r'^$', home, name='home'),
]

为了简化 URL 配置,patterns() 在 Django 1.8 中被弃用,并在 1.10 (release notes) 中被移除。在 Django 1.10 中,urlpatterns 必须是 url() 个实例的列表。不再支持在 patterns() 中使用元组,Django 检查框架将引发错误。

解决这个问题很容易,只需转换任何元组

urlpatterns = [
    (r'^$', home, name='home'),  # tuple
]

url()个实例:

urlpatterns = [
    url(r'^$', home, name='home'),  # url instance
]

如果你得到以下NameError,

NameError: name 'url' is not defined

然后将以下导入添加到您的 urls.py:

from django.conf.urls import url

如果您在 url 模式中使用字符串,例如'myapp.views.home',您必须更新这些才能同时使用可调用对象。有关详细信息,请参阅

有关 urlpatterns 的更多信息,请参阅 Django URL dispatcher docs

检查您是否使用过 URL 模式,如下所示:

urlpatterns += (
    (r'^404/$', page_not_found_view),
)

改为:

urlpatterns += [
    url(r'^404/$', page_not_found_view),
]