没有名为 index 的模块

2 投票
1 回答
6196 浏览
提问于 2025-04-16 13:01

我遇到了一个错误,提示异常值:没有名为 index 的模块。我在 DjangoPhoneBook 和 phonebook 文件夹里都有 __init__.py 文件。我是 Django 新手,正在按照 djangoproject 网站上的教程学习。我在网上搜索了这个错误,但没有找到解决办法。

这个问题的原因和解决方法是什么呢?

Environment:

Request Method: GET
Request URL: http://localhost:8000/Book/
Django Version: 1.2.3
Python Version: 2.6.6
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'phonebook',
 'django.contrib.admin']
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 "/usr/lib/pymodules/python2.6/django/core/handlers/base.py" in get_response
  91.                         request.path_info)
File "/usr/lib/pymodules/python2.6/django/core/urlresolvers.py" in resolve
  217.                     sub_match = pattern.resolve(new_path)
File "/usr/lib/pymodules/python2.6/django/core/urlresolvers.py" in resolve
  215.             for pattern in self.url_patterns:
File "/usr/lib/pymodules/python2.6/django/core/urlresolvers.py" in _get_url_patterns
  244.         patterns = getattr(self.urlconf_module, "urlpatterns",         self.urlconf_module)
File "/usr/lib/pymodules/python2.6/django/core/urlresolvers.py" in _get_urlconf_module
  239.             self._urlconf_module = import_module(self.urlconf_name)
File "/usr/lib/pymodules/python2.6/django/utils/importlib.py" in import_module
  35.     __import__(name)

Exception Type: ImportError at /Book/
Exception Value: No module named index

urls.py 的内容是

from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
from DjangoPhoneBook.phonebook.views import *

urlpatterns = patterns('',
    (r'^Book/$', include('index'))
    (r'^admin/', include(admin.site.urls)),
)

views.py 的内容是

  from django.http import HttpResponse
  def index(request):
     return HttpResponse("This is a view page")

1 个回答

11

把你第一行的 include 去掉。 include 是用来添加一个单独的 URL 配置的语法,所以 Python 正在寻找一个叫 indexmodule

把它改成你视图函数的完整 Python 点路径。

urlpatterns = patterns('',
    (r'^Book/$', 'path.to.my.views.index'), # <-- and add a comma here
    (r'^admin/', include(admin.site.urls)),
)

补充:我注意到你在导入你的视图函数。你也可以直接指定视图函数本身。

urlpatterns = patterns('',
    (r'^Book/$', index),
    (r'^admin/', include(admin.site.urls)),
)

撰写回答