Django - 导入错误:没有名为*.urls的模块
我正在学习官方的Django教程,并根据自己的需求稍微调整一下,使用的是Django 1.6.1版本和Python 2.7.6。
现在我在设置网址映射的时候,总是遇到“No module named customers.urls”的错误,明明里面有一个命名合适的模块文件,所以我真的不知道自己哪里出了问题。
我最开始的想法是需要在根目录的urls.py文件里导入一些与customers相关的东西,但无论我怎么组合导入,结果都差不多是同样的错误,而且教程里并没有说要这样做。
ROOT_URLCONF = 'taco.urls'(taco是项目的名字)
我是在用manage.py/runserver来运行这个项目,所以我知道没有什么特别的网络服务器设置。我已经重启了好几次。
所有的应用程序都已经正确注册,回溯信息也能证明这一点。
如果有我忽略的地方,请给我一些提示!
根目录的urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^customers/', include('customers.urls')),
url(r'^admin/', include(admin.site.urls)),
)
customers的urls.py:
from django.conf.urls import patterns, url;
from customers import views;
urlpatterns = ('',
url(r'^$', views.index, name='index')
);
customers的views.py:
from django.shortcuts import render
from django.http import HttpResponse;
def index(request):
return HttpResponse("Hello");
回溯信息
Environment:
Request Method: GET
Request URL: http://192.168.3.208:8000/customers/
Django Version: 1.6.1
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',
'south',
'taco.customers',
'taco.inventory',
'taco.lookups',
'taco.orders')
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/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
99. resolver_match = resolver.resolve(request.path_info)
File "/usr/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve
337. for pattern in self.url_patterns:
File "/usr/lib/python2.7/dist-packages/django/core/urlresolvers.py" in url_patterns
365. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/usr/lib/python2.7/dist-packages/django/core/urlresolvers.py" in urlconf_module
360. self._urlconf_module = import_module(self.urlconf_name)
File "/usr/lib/python2.7/dist-packages/django/utils/importlib.py" in import_module
40. __import__(name)
File "/var/project/taco/taco/urls.py" in <module>
7. url(r'^customers/', include('customers.urls')),
File "/usr/lib/python2.7/dist-packages/django/conf/urls/__init__.py" in include
26. urlconf_module = import_module(urlconf_module)
File "/usr/lib/python2.7/dist-packages/django/utils/importlib.py" in import_module
40. __import__(name)
Exception Type: ImportError at /customers/
Exception Value: No module named customers.urls
2 个回答
0
如果“taco”是项目的名字,检查一下应用程序是否被正确引用。在你的已安装应用中,你可能需要添加以下内容:
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'south',
'customers',
'inventory',
'lookups',
'orders')
7
在你的 customers/urls.py 文件里:
把这个部分:
urlpatterns = ('',
url(r'^$', views.index, name='index')
);
改成这个:
urlpatterns = patterns('',
url(r'^$', views.index, name='index')
);
另外,确保你的 __init__.py
文件在 customers 这个包里。而且 INSTALLED_APPS
里要正确填写你的应用名称。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'south',
'customers',
'inventory',
'lookups',
'orders',
)