Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django导入在尝试导入视图时不起作用_Python_Django_Django Urls_Importerror - Fatal编程技术网

Python Django导入在尝试导入视图时不起作用

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

我有以下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.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'),
)