2015-08-04 4 views
0

Я пытаюсь выполнить учебник django 1.8, я нахожусь на части 3, и получаю ошибку Exception Value: 'module' object has no attribute 'index'. Похоже, что он неправильно импортирует views.py. Любая помощь? Благодаря!django 1.8 tutorial часть 3

Вот мой urls.py:

from django.conf.urls import patterns, url 
from polls import views 

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'), 
) 

Вот мой views.py:

from django.shortcuts import render 
from django.http import HttpResponse 

# Create your views here. 
def index(request): 
    return HttpResponse("Hello, World. You're at the polls index") 

Вот моя ошибка выхода:

Окружающая среда:
Запрос Метод: GET URL-адрес запроса: http://127.0.0.1:8000/polls

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


Traceback: 
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.3-py2.7.egg/django/core/handlers/base.py" in get_response 
    108.     response = middleware_method(request) 
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.3-py2.7.egg/django/middleware/common.py" in process_request 
    74.    if (not urlresolvers.is_valid_path(request.path_info, urlconf) and 
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.3-py2.7.egg/django/core/urlresolvers.py" in is_valid_path 
    647.   resolve(path, urlconf) 
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.3-py2.7.egg/django/core/urlresolvers.py" in resolve 
    522.  return get_resolver(urlconf).resolve(path) 
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.3-py2.7.egg/django/core/urlresolvers.py" in resolve 
    366.    for pattern in self.url_patterns: 
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.3-py2.7.egg/django/core/urlresolvers.py" in url_patterns 
    402.   patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.3-py2.7.egg/django/core/urlresolvers.py" in urlconf_module 
    396.    self._urlconf_module = import_module(self.urlconf_name) 
File "/usr/lib/python2.7/importlib/__init__.py" in import_module 
    37.  __import__(name) 
File "/home/polsen/scripts_i_wrote/python/mysite/mysite/urls.py" in <module> 
    11.  url(r'^polls/', include('polls.urls')), 
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.3-py2.7.egg/django/conf/urls/__init__.py" in include 
    33.   urlconf_module = import_module(urlconf_module) 
File "/usr/lib/python2.7/importlib/__init__.py" in import_module 
    37.  __import__(name) 
File "/home/polsen/scripts_i_wrote/python/mysite/polls/urls.py" in <module> 
    6.  url(r'^$', views.index, name='index'), 

Exception Type: AttributeError at /polls 
Exception Value: 'module' object has no attribute 'index' 

Структура папок:

mysites/. 
./polls 
./polls/views.py 
./polls/__init__.pyc 
./polls/admin.py 
./polls/admin.pyc 
./polls/urls.py 
./polls/models.pyc 
./polls/migrations 
./polls/migrations/__init__.pyc 
./polls/migrations/0001_initial.pyc 
./polls/migrations/0001_initial.py 
./polls/migrations/__init__.py 
./polls/tests.py 
./polls/views.pyc 
./polls/urls.pyc 
./polls/models.py 
./polls/__init__.py 
./mysite 
./mysite/__init__.pyc 
./mysite/wsgi.py 
./mysite/settings.py 
./mysite/urls.py 
./mysite/settings.pyc 
./mysite/urls.pyc 
./mysite/__init__.py 
./mysite/wsgi.pyc 
./manage.py 

ответ

0

Это ошибка импорта, попробуйте:

from polls.views import index 

И в URL:

url(r'^$', index, name='index'), 

EDIT

не только для руководства:

Если urls.py и views.py находятся на том же уровне, использование:

from . import views 

И в URL:

url(r'^$', views.index, name='index'), 
+0

Это не работает, но я получаю новый тип ошибки: 'Исключение Тип: \t ImportErrorException Значение: \t не может импортировать имя index' – hep

+0

** Если' 'urls.py' и views.py' в то же самое уровень ** использование: 'из. import views' и в url: 'views.index' – Gocht

+0

По-прежнему получают ту же ошибку. – hep

1

Если вы внимательно следит за учебным курсом см. в разделе urls.py,

from poll import views 

фактически

from . import views 
+0

ОК. Я сделал это изменение, но я все равно получаю ту же ошибку. :( – hep

1

Try:

from . import views # relative import 

Фактический код в tutorial является:

from django.conf.urls import url 

from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
] 

Кроме того, в Django 1.8 urlpatterns должен быть список django.conf.urls.url() экземпляров.

По Django 1.8 docs:

urlpatterns должен быть список Python из django.conf.urls.url() экземпляров.

В Django 1.7, urlpatterns переменная используется как список Python, в формате, возвращаемом функцией django.conf.urls.patterns().

+0

Он по-прежнему не работает. Дает ту же ошибку, что и я. – hep

+0

Он работает сейчас! Я понятия не имею, что я сделал, но он работает. – hep

+0

Отлично! На боковой ноте измените свои 'urlpatterns' на список 'django.conf.urls.url()' экземпляров. –