Reputation: 23
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
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
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
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
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