无法导入名称模式


77

在我写urls.py代码之前,我的代码...一切正常。现在,我遇到了问题-无法访问我的网站。“无法导入名称模式”

我的urls.py是:

from django.conf.urls import patterns, include, url

他们说这里有什么错误。


您能告诉我们完整的错误和跟踪吗?
Tim Post

3
在遵循“编写您的第一个Django应用程序”指南时,我遇到了同样的问题。当我将url模式从主urls.py移到polls.urls.py时。我将“ from django.conf.urls导入模式,包括,url”更改为“ from django.conf.urls.defaults import *”后,问题解决了
2011年

2
部署到我的登台服务器时,我遇到了同样的问题。问题消失了,我通过运行sudo pip install --upgrade django从django 1.3.1升级到1.4
Mike Grace

Answers:


28

您不需要那些进口。您需要在urls.py中(开始)的唯一内容是:

from django.conf.urls.defaults import *

# This two if you want to enable the Django Admin: (recommended)
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    # ... your url patterns
)

注意:此解决方案适用于Django <1.6。这实际上是Django本身生成的代码。对于较新的版本,请参见Jacob Hume的答案。


39
进口*被认为是不良行为
llazzaro '16

3
从django.conf.urls.defaults导入*从djnago1.6中删除
neelima

49
每当您import *的小猫死亡时
cs01

1
如果他不能显式导入模式,使用*也将不起作用...
Cerin

1
不再提供正确答案,反而提倡(导入*)反模式。请相应地更新答案
Vasif

159

从Django 1.10开始,该patterns模块已被删除(从1.8开始不推荐使用)。

幸运的是,删除该违规代码应该是一个简单的编辑,因为该代码urlpatterns 现在应该存储在一个普通的列表中

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    # ... your url patterns
]

1
但是我怎么能将MEDIA_ROOT和附加MEDIA_URL到urlpatterns
Roel


3
有关Django 1.8中此更改的更多文档和原理,请参阅docs.djangoproject.com/en/1.10/releases/1.8/…–
nealmcb

并且您必须删除的''第一个位置处的空白URL urlpatterns,否则您将收到Regex AttributeError。见stackoverflow.com/questions/34853531/...
MR-IDE

21

是:

from django.conf.urls.defaults import ... # is for django 1.3
from django.conf.urls  import ...         # is for django 1.4

我也遇到了这个问题。


11

样式模块不受支持。

from django.conf.urls import *
from django.contrib import admin
admin.autodiscover()

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    # ... your url patterns
]

6

这是为我工作的代码。我的Django版本是1.10.4最终

from django.conf.urls import url, include

from django.contrib import admin
admin.autodiscover()

urlpatterns = [
    # Examples:
    # url(r'^$', 'blog.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
]

3

Django 1.8中不提供Pattern模块。因此,您需要从导入中删除模式,并执行以下操作:

from django.conf.urls import include, url
from django.contrib import admin

admin.autodiscover()

urlpatterns = [                 
    # here we are not using pattern module like in previous django versions
    url(r'^admin/', include(admin.site.urls)),
]

1

我通过将项目从GIT直接克隆到Eclipse中来解决它,

最初,我将其克隆到文件系统上的特定位置,然后将其作为现有项目导入到Eclipse中。


0

似乎您使用的是django的过时版本。只需更新django,然后重试即可。以下命令将更新您的django版本。

pip install --upgrade django

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.