Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is causing this error on part 3 of Django tutorial?

Tags:

python

django

I have run into an issue while working through the Django tutorial, specifically when adding more views to the poll application. For reference, this is the beginning of the section that trips me up: https://docs.djangoproject.com/en/1.5/intro/tutorial03/#writing-more-views

Prior to that section, I can get the polls/ view to show up with no issue. But when I add three additional views to make polls/views.py look like this:

def detail(request, poll_id):
    return HttpResponse("You're looking at poll %s." % poll_id)

def results(request, poll_id):
    return HttpResponse("You're looking at the results of poll %s." % poll_id)

def vote(request, poll_id):
    return HttpResponse("You're voting on poll %s." % poll_id)

and then make polls/urls.py look like this:

from django.conf.urls import patterns, url

from polls import views

urlpatterns = patterns('',
    # ex: /polls/
    url(r'^$', views.index, name='index'),
    # ex: /polls/5/
    url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
    # ex: /polls/5/results/
    url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'),
    # ex: /polls/5/vote/
    url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'),
)

I get an error. As an aside, my mysite ROOT_URLCONF is pointing to mysite/urls.py which looks like this:

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

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

The error that I am getting is:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/polls/34

Django Version: 1.5.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'polls')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/home/matthew/.virtualenvs/djangopoll/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  92.                     response = middleware_method(request)
File "/home/matthew/.virtualenvs/djangopoll/local/lib/python2.7/site-packages/django/middleware/common.py" in process_request
  69.             if (not urlresolvers.is_valid_path(request.path_info, urlconf) and
File "/home/matthew/.virtualenvs/djangopoll/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in is_valid_path
  551.         resolve(path, urlconf)
File "/home/matthew/.virtualenvs/djangopoll/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
  440.     return get_resolver(urlconf).resolve(path)
File "/home/matthew/.virtualenvs/djangopoll/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
  319.             for pattern in self.url_patterns:
File "/home/matthew/.virtualenvs/djangopoll/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
  347.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/matthew/.virtualenvs/djangopoll/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
  342.             self._urlconf_module = import_module(self.urlconf_name)
File "/home/matthew/.virtualenvs/djangopoll/local/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
  35.     __import__(name)
File "/home/matthew/djangopoll/mysite/mysite/urls.py" in <module>
  8.                        url(r'^polls/', include('polls.urls')),
File "/home/matthew/.virtualenvs/djangopoll/local/lib/python2.7/site-packages/django/conf/urls/__init__.py" in include
  25.         urlconf_module = import_module(urlconf_module)
File "/home/matthew/.virtualenvs/djangopoll/local/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
  35.     __import__(name)

Exception Type: SyntaxError at /polls/34
Exception Value: invalid syntax (urls.py, line 9)

Also, the following may be informative:

  • Using Django 1.5
  • Using Python 2.7.3
  • Using Django 1.5 documentation
  • Using VirtualBox
  • Using VirtualEnv

Any help is appreciated! Why am I getting this error?

like image 516
Matt Avatar asked Jun 16 '13 03:06

Matt


1 Answers

Looks like Python cannot import polls.urls - that's why __import__(name) fails. The "name" here would be your module name, 'polls.urls'.

To find out why the system cannot import your polls.urls, try importing it interactively.

$ python manage.py shell

 Python ... blah blah
 ...

> import polls.urls

This will fail, but the traceback will give you the next clue to where your error is.

Good luck!

like image 67
orlenko Avatar answered Oct 21 '22 20:10

orlenko