Python django-导入错误:没有名为视图的模块

Python django-导入错误:没有名为视图的模块,python,django,import,django-views,Python,Django,Import,Django Views,我一直绞尽脑汁,弄不明白为什么在导入“视图”时会出现导入错误。当我访问我的索引页面时,我收到以下消息: " Request Method: GET Request URL: http://127.0.0.1:8000/moments/ Django Version: 1.6.1 Exception Type: ImportError Exception Value: No module named views Exception Location: C:\Python27\lib\

我一直绞尽脑汁,弄不明白为什么在导入“视图”时会出现导入错误。当我访问我的索引页面时,我收到以下消息:

"
Request Method: GET
Request URL:    http://127.0.0.1:8000/moments/
Django Version: 1.6.1
Exception Type: ImportError
Exception Value:    
No module named views
Exception Location: C:\Python27\lib\site-packages\django\utils\importlib.py in import_module, line 40
"
这是我的URL.py

from django.conf.urls import patterns, url

from moments_app import views

urlpatterns = patterns('',
    url(r'^$', "views.index", name='index'),
    url(r'^$', "views.choose_dataset", name='choose'),
    url(r'^get_moments/', "views.get_moments", name='get_moments'),
    url(r'^learn/$', "views.learn", name='learn'),
    url(r'^(?P<moment_id>\d+)/$', "views.detail", name='detail'),

)
来自django.conf.url导入模式,url
从应用程序导入视图
urlpatterns=模式(“”,
url(r'^$',“views.index”,name='index'),
url(r'^$',“视图.选择数据集”,name='choose'),
url(r“^get\u moments/”,“views.get\u moments”,name='get\u moments'),
url(r“^learn/$”,“views.learn”,name='learn'),
url(r'^(?P\d+/$),“views.detail”,name='detail'),
)

我的应用文件夹中显然有一个名为“视图”的模块。另外,moments\u应用程序也在我的路径中。有人知道是什么导致了这一切吗

在路由名称前加上相对模块名称。使用绝对名称:

urlpatterns = patterns('',
    url(r'^$', "moments_app.views.index", name='index'),
    url(r'^$', "moments_app.views.choose_dataset", name='choose'),
    url(r'^get_moments/', "moments_app.views.get_moments", name='get_moments'),
    url(r'^learn/$', "moments_app.views.learn", name='learn'),
    url(r'^(?P<moment_id>\d+)/$', "moments_app.views.detail", name='detail'),
)
urlpatterns=patterns(“”,
url(r'^$',“矩_app.views.index”,name='index'),
url(r'^$',“时刻应用程序视图.选择数据集”,name='choose'),
url(r“^get\u moments/”,“moments\u应用程序视图.get\u moments”,name='get\u moments'),
url(r“^learn/$”,“moments\u app.views.learn”,name='learn'),
url(r'^(?P\d+/$),“moments_app.views.detail”,name='detail'),
)
或者更好地使用第一个参数指定完整的模块路径:

urlpatterns = patterns('moments_app.views',
    url(r'^$', "index", name='index'),
    url(r'^$', "choose_dataset", name='choose'),
    url(r'^get_moments/', "get_moments", name='get_moments'),
    url(r'^learn/$', "views.learn", name='learn'),
    url(r'^(?P<moment_id>\d+)/$', "detail", name='detail'),
)
urlpatterns=patterns('moments\u app.views',
url(r'^$',“索引”,name='index'),
url(r'^$',“选择数据集”,name='choose'),
url(r“^get\u moments/”,“get\u moments”,name='get\u moments'),
url(r“^learn/$”,“views.learn”,name='learn'),
url(r'^(?P\d+/$),“detail”,name='detail'),
)
尽管也允许两者的结合:

urlpatterns = patterns('moments_app',
    url(r'^$', "views.index", name='index'),
    url(r'^$', "views.choose_dataset", name='choose'),
    url(r'^get_moments/', "views.get_moments", name='get_moments'),
    url(r'^learn/$', "views.learn", name='learn'),
    url(r'^(?P<moment_id>\d+)/$', "views.detail", name='detail'),
)
urlpatterns=patterns('moments\u app',
url(r'^$',“views.index”,name='index'),
url(r'^$',“视图.选择数据集”,name='choose'),
url(r“^get\u moments/”,“views.get\u moments”,name='get\u moments'),
url(r“^learn/$”,“views.learn”,name='learn'),
url(r'^(?P\d+/$),“views.detail”,name='detail'),
)

您已将视图导入为

from moments_app import views
有时它不起作用

用这个

from moments_app.views import *


urlpatterns = patterns('',

    url(r'^$', index, name='index'),
    url(r'^$', choose_dataset, name='choose'),
    url(r'^get_moments/', get_moments, name='get_moments'),
    url(r'^learn/$', learn, name='learn'),
    url(r'^(?P<moment_id>\d+)/$', detail, name='detail'),

)
从应用程序视图导入*
urlpatterns=模式(“”,
url(r'^$',索引,name='index'),
url(r'^$',选择_数据集,name='choose'),
url(r“^get\u moments/”,get\u moments,name='get\u moments'),
url(r“^learn/$”,learn,name='learn'),
url(r'^(?P\d+/$),详细信息,name='detail'),
)
它将起作用。

两年更新:

在Django 1.8及更高版本中,字符串视图和
模式
函数都被弃用,从而产生了更简单、更可靠的语法:

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^$', views.choose_dataset, name='choose'),
    url(r'^get_moments/', views.get_moments, name='get_moments'),
    url(r'^learn/$', views.learn, name='learn'),
    url(r'^(?P<moment_id>\d+)/$', views.detail, name='detail'),
]

只需将导入语句更改为

import appname.views

这对我的代码来说效果很好。

我遇到了这个问题,并尝试了上述答案,但问题是我在views.py中的“render”函数中缺少了一个字符串引号,而在url.py中,我错过了该引号,并且遇到了一个问题,即“portfolio”(应用程序名)中不存在模块“views”。
希望这有帮助

from moments\u app import view
如果您使用基于字符串的导入,则不会产生任何影响。虽然此代码可以解决此问题,但如何以及为什么解决此问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
import appname.views