Django 错误:您的 URL 模式无效。确保 urlpatterns 是 url() 实例的列表

Posted

技术标签:

【中文标题】Django 错误:您的 URL 模式无效。确保 urlpatterns 是 url() 实例的列表【英文标题】:Django Error: Your URL pattern is invalid. Ensure that urlpatterns is a list of url() instances 【发布时间】:2016-12-11 16:55:59 【问题描述】:

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

【问题讨论】:

【参考方案1】:

检查您是否使用过这样的 URL 模式:

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

改成:

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

【讨论】:

【参考方案2】:

为了简化 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',您必须更新这些以同时使用可调用对象。请参阅this answer 了解更多信息。

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

【讨论】:

以上是关于Django 错误:您的 URL 模式无效。确保 urlpatterns 是 url() 实例的列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自定义 django 404 错误视图重定向?

`eb deploy` 错误“您的 requirements.txt 无效”(Python 应用程序)

linux虚拟机移动后密码错误

尝试在 JavaScript 中使用 Gruber 的“改进的”URL 匹配正则表达式模式时,如何修复“无效组”错误?

django-urls 浏览器预览错误

如果在 django 的 urls.py 中找不到,则将任何 url 重定向到 404.html