Python Django导入在尝试导入视图时不起作用
我有以下URL.py文件:Python Django导入在尝试导入视图时不起作用,python,django,django-urls,importerror,Python,Django,Django Urls,Importerror,我有以下URL.py文件: from django.conf.urls import patterns, url from base import views urlpatterns = patterns('', url(r'^$', 'views.index', name='index'), url(r'^item/new', 'views.newItem', name='newItem'), url(r'^item/submitted', 'views.itemSu
from django.conf.urls import patterns, url
from base import views
urlpatterns = patterns('',
url(r'^$', 'views.index', name='index'),
url(r'^item/new', 'views.newItem', name='newItem'),
url(r'^item/submitted', 'views.itemSubmitted', name='itemSubmitted'),
)
这不起作用,它给了我一个重要的消息,说没有名为视图的模块。当我删除上面的第二个导入行并将这些行从views.viewname更改为base.views.viewname时,它会起作用。有人知道为什么导入不起作用吗 url路由列表语句正在使用字符串语句定义视图的位置。Django将在需要时尝试延迟加载视图方法,这对于导入视图方法会导致导入循环的奇怪情况非常有用。如果导入循环不是问题(它们不应该是问题),则有两种方法:
from django.conf.urls import patterns, url
from base import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^item/new', views.newItem, name='newItem'),
url(r'^item/submitted', views.itemSubmitted, name='itemSubmitted'),
)
或
在前者中,您将view方法作为路由的属性传递。在后者中,您将向视图方法传递导入路径。请注意,在后者中,不需要为视图提供导入语句
为了减少重复,您还可以提取重复的前缀“base.views”:
from django.conf.urls import patterns, url
urlpatterns = patterns('base.views',
url(r'^$', 'index', name='index'),
url(r'^item/new', 'newItem', name='newItem'),
url(r'^item/submitted', 'itemSubmitted', name='itemSubmitted'),
)
好电话,sk1p!添加前缀也是对URL路由进行分组和组织的好方法。但是,这些文件太多可能表明您希望开始在子应用程序中创建
url.py
文件。
from django.conf.urls import patterns, url
urlpatterns = patterns('base.views',
url(r'^$', 'index', name='index'),
url(r'^item/new', 'newItem', name='newItem'),
url(r'^item/submitted', 'itemSubmitted', name='itemSubmitted'),
)