django - import error: no module named views

django, django-views, import, python

Solution

You prefixed your route names with a relative module name. Use an absolute name:

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'),
)

or better still, use the first argument to specify the full module path:

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'),
)

although a combination of the two is also allowed:

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'),
)

Problem

I've been racking my brains and can't figure out why there should be an import error when 'views' is imported. I get the following message when I visit my index page: ``` " 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 " ``` Here is my urls.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'), ) ``` I clearly have a module named views in my moments_app folder. Also, moments_app is in my path. Does anyone have any ideas as to what might be causing this?

Original source