2013-06-16 7 views
6

Ho riscontrato un problema durante l'esecuzione del tutorial di Django, in particolare quando si aggiungono più visualizzazioni all'applicazione di polling. Per avere un riferimento, questo è l'inizio della sezione che mi viaggi fino: https://docs.djangoproject.com/en/1.5/intro/tutorial03/#writing-more-viewsQual è la causa di questo errore nella parte 3 del tutorial di Django?

Prima di quella sezione, posso ottenere i sondaggi/ vista di presentarsi senza alcun problema. Ma quando aggiungo tre punti di vista aggiuntivi per rendere sondaggi/views.py simile a questa:

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) 

e poi fare sondaggi/urls.py simile a questa:

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

ottengo un errore. Per inciso, il mio mysite ROOT_URLCONF sta puntando a mysite/urls.py che assomiglia a questo:

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

L'errore che sto ottenendo è:

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) 

Inoltre, il seguente può essere informativo:

  • Utilizzando Django 1.5
  • Utilizzando P ython 2.7.3
  • Utilizzando Django 1.5 documentazione
  • tramite VirtualBox
  • Utilizzando virtualenv

Ogni aiuto è apprezzato! Perché ricevo questo errore?

+1

È possibile importare 'polls.urls' dalla shell di Django? –

risposta

7

Sembra che Python non possa importare polls.urls: ecco perché lo __import__(name) non riesce. Il "nome" qui sarebbe il nome del tuo modulo, "polls.urls".

Per scoprire perché il sistema non può importare polls.urls, provare a importarlo in modo interattivo.

$ python manage.py shell 

Python ... blah blah 
... 

> import polls.urls 

Questo fallirà, ma il traceback ti darà il prossimo indizio su dove si trova il tuo errore.

Buona fortuna!

+2

Questo è stato utile, perché ho imparato a usare la shell interattiva di Django ... ma il problema che stavo facendo era incredibilmente ridicolo. Il traceback che mi hai suggerito mi ha portato a capire che avevo bisogno di una virgola dopo la prima vista prima delle viste aggiuntive che ho aggiunto. Doh! – Matt

+1

Ognuno fa quegli errori. Dovresti sentirti bene per fare progressi! – orlenko

+0

Questo mi ha anche aiutato a usare la shell interattiva per capire quale urls.py django avesse problemi di importazione. Il mio errore era ugualmente ridicolo, una parentesi mancante e semplice. –

Problemi correlati