django 1.8教程第3部分

时间:2015-08-04 14:39:12

标签: python django django-1.8

我正在尝试执行django 1.8教程,我在第3部分,我收到Exception Value: 'module' object has no attribute 'index'错误。好像它没有正确导入views.py。任何帮助?谢谢!

这是我的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     请求网址: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

3 个答案:

答案 0 :(得分:1)

如果您仔细阅读本教程,您会在urls.py中看到您的

from poll import views

实际上是

from . import views

答案 1 :(得分:1)

尝试:

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应该是django.conf.urls.url()的Python列表   实例

Django 1.7中,urlpatterns变量曾经是Python列表,采用函数django.conf.urls.patterns()返回的格式。

答案 2 :(得分:0)

导入错误,请尝试:

from polls.views import index

在网址中:

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

修改

不仅仅是教程:

如果urls.pyviews.py处于同一级别,请使用:

from . import views

并在网址:

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