urlpatterns中的Django错误:没有名为views的模块

时间:2015-09-24 06:35:31

标签: python django django-1.7 django-1.8

在Django 1.7.x中,这个结构正在运行:

# urls.py

import views

urlpatterns = ('',
   url(r'^$', views.index)
)

在Django 1.8.X中它停止了工作。现在,当我运行默认的Django服务器时,我收到此错误消息:

  

没有名为'观看'

的模块

我也试过这个:

from system.views import *

urlpatterns = ('',
   url(r'^$', views.index)
)

这导致:

  

姓名'观点'未定义

而且:

from system import views

urlpatterns = ('',
   url(r'^$', views.index)
)

我还尝试了很多我在stackoverflow上看过的组合,但是没有一个能够工作。希望有人可以分享哪种魔法组合应该做的伎俩。

修改

\home
  \jacobian
     \apps
        \apps
          __init__.py
          settings.py
          urls.py
          views.py
          ...
       \system
          __init__.py
          urls.py
          views.py
          ...

3 个答案:

答案 0 :(得分:2)

我只是想重新创建这个问题。看来你是对的,只是import views不再有效。但是,以下import语句对我来说很好:

from . import views

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', views.index)
]

您可以在django documentation上看到示例。我也认为这个相关的Stack Overflow问题可以澄清它们对点导入语法的原因:

问:Python "from [dot]package import ..." syntax

答案 1 :(得分:1)

您应该包含已创建的应用程序中的views.py文件。所以试试

from <your app name>.views import *

答案 2 :(得分:1)

你的陈述有点混乱。

在版本1.8之前,它是

from myapp import views

urlpatterns = patterns('',
    url('^$', views.myview),
    url('^other/$', views.otherview),
)

现在,从版本1.8开始,在分配patterns时,urlpatterns不需要第一个void参数。实际上根本不需要拨打patterns

以下是我使用Django 1.8的最新项目的一个示例:

urlpatterns = [
    url(r'^$', HomePage.as_view(), name='home'),
    url(r'^play/', include('play.urls', namespace='play', app_name='play')),
]

Django 1.8 release docs

中所述
  

因此,模式()没有什么用处,在教学时也是一种负担   新用户(回答新手的问题“为什么我需要这个空的   string作为patterns()的第一个参数?“)。出于这些原因,我们   正在弃用它。更新代码就像确保代码一样简单   urlpatterns是django.conf.urls.url()实例的列表。   例如:

from django.conf.urls import url
from myapp import views

urlpatterns = [
    url('^$', views.myview),
    url('^other/$', views.otherview),
]