Jae-Han  Park
Jae-Han Park

Reputation: 23

Django - importError at /blog. (No module named urls)

While studying Django tutorial (the book is Python Web Development with Django), I've been getting an import error.

I've looked for a solution on here and with Google, but I couldn't find one that worked.

My error is ImportError at /blog. No module named urls.

I'm using django 1.5.1.

My files are structure -

 - mysite
     manage.py
     - blog
        __init__.py
        models.py
        tests.py
        urls.py
        views.py
        - templates
            archive.html
     - mysite
        __init__.py
        settings.py
        urls.py
        wsgi.py

mysite/blog/urls.py

from django.conf.urls.defaults import patterns, include, url
from mysite.blog.views import archive

urlpatterns = patterns('',
        url(r'^$', archive),
)

mysite/blog/view.py

from django.template import loader, Context
from django.http import HttpResponse
from mysite.blog.models import BlogPost

def archive(requset):
    posts = BlogPost.objects.all()
    t = loader.get_template("archive.html")
    c = context({ 'posts': posts })
    return HttpResponse(t.render(c))

mysite/mysite/urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
       url(r'^admin/', include(admin.site.urls)),
       url(r'^blog/', include('mysite.blog.urls')),
      # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

)

setting.py

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    'django.contrib.admindocs',
    'blog',
)

traceback

Traceback Switch to copy-and-paste view

    /usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response

                            resolver_match = resolver.resolve(request.path_info)

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in resolve

                    for pattern in self.url_patterns:

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in url_patterns

                patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in urlconf_module

                    self._urlconf_module = import_module(self.urlconf_name)

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/utils/importlib.py in import_module

            __import__(name)

        ...
    ▶ Local vars
    /home/han/Django/mysite/mysite/urls.py in <module>

               url(r'^blog/', include('mysite.blog.urls')),

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/conf/urls/__init__.py in include

                urlconf_module = import_module(urlconf_module)

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/utils/importlib.py in import_module

            __import__(name)

        ...
    ▶ Local vars 

Upvotes: 1

Views: 4271

Answers (4)

Haimei
Haimei

Reputation: 12965

My solution is here:

mysite/blog/urls.py

from mysite.blog.views import archive 

to

from blog.views import archive

mysite/blog/view.py

from mysite.blog.models import BlogPost 

to

from blog.models import BlogPost

mysite/mysite/urls.py

url(r'^blog/', include('mysite.blog.urls')), 

to

url(r'^blog/', include('blog.urls')),

Here I suggest you to set DEBUG true in settings.py . when there is mistake, it can tell you the place where the application stop. In this case, you just need to jump to this place. It would be better to debug.

Upvotes: 0

therookie
therookie

Reputation: 1

I have been having the same problem but I did just the opposite of what @Haimei did

mysite/blog/urls.py from blog.views import archive changed it to

from mysite.blog.views import archive

and it worked.

also make sure that .defaults is removed from from django.conf.urls.defaults import patterns, include, url

Upvotes: 0

user2986604
user2986604

Reputation: 1

change this file mysite/blog/urls.py from django.conf.urls.defaults import patterns, include, url
to from django.conf.urls import patterns, include, url

Upvotes: 0

Paulo Bu
Paulo Bu

Reputation: 29794

I think you have to change this line:

url(r'^blog/', include('mysite.blog.urls')),

to this:

url(r'^blog/', include('blog.urls')),

Hope it helps!

Upvotes: 1

Related Questions