What causes this error in part 3 of the Django tutorial?

I had a problem working with the Django tutorial, especially when adding more views to the survey application. For reference, this is the beginning of the section that turns me off: https://docs.djangoproject.com/en/1.5/intro/tutorial03/#writing-more-views

Prior to this section, I can get polls / views so that they appear without any problems. But when I add three additional views to create polls /views.py, 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 do polls /urls.py as shown below:

 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 message. Aside, my mysite ROOT_URLCONF points 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 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) 

In addition, 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?

+6
source share
1 answer

Python doesn't seem to be able to import polls.urls - that is why __import__(name) fails. The "name" here will 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 trace will give you the following clue where your error is.

Good luck

+7
source

Source: https://habr.com/ru/post/947390/


All Articles