Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

django - import error: no module named views

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?

like image 913
David J. Avatar asked Jan 31 '14 16:01

David J.


2 Answers

You have imported your view as

from moments_app import views

Some times it won't work.

Use this

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

)

It will work..

like image 56
Aravind Aran Avatar answered Oct 19 '22 23:10

Aravind Aran


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'),
)
like image 26
Martijn Pieters Avatar answered Oct 19 '22 21:10

Martijn Pieters