Py学习  »  问与答

Django "No module name urls" 错误

余星 • 9 年前 • 4118 次点击  

在做一个 Blog,本地使用 python manage.py runserver 没有问题。commit 到 sae 之后出现 “No module name urls” 错误。

版本
python 2.7
django 1.6.4
平台
SAE

之前能很好地运行。
我创建第二个应用之后,把 urlpattern 都写在主 urls 上,也是妥妥的。
当我把urlpattern 按应用地址分开,然后分别写在相应应用下的 urls 中,再从主 urls 中 include 它们。这时在本地运行没有问题,上传到 SAE 后就出现了 “No module name urls” 错误。

可能是哪里出错了呢?
谢先!

错误信息如下:

Traceback (most recent call last):
  File "/usr/local/sae/python/lib/python2.7/site-packages/sae/__init__.py", line 18, in new_app
    return app(environ, start_response)
  File "/data1/www/htdocs/664/dawnstr/1/site-packages/django/core/handlers/wsgi.py", line 206, in __call__
    response = self.get_response(request)
  File "/data1/www/htdocs/664/dawnstr/1/site-packages/django/core/handlers/base.py", line 196, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "/data1/www/htdocs/664/dawnstr/1/site-packages/django/core/handlers/base.py", line 234, in handle_uncaught_exception
    if resolver.urlconf_module is None:
  File "/data1/www/htdocs/664/dawnstr/1/site-packages/django/core/urlresolvers.py", line 360, in urlconf_module
    self._urlconf_module = import_module(self.urlconf_name)
  File "/data1/www/htdocs/664/dawnstr/1/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/data1/www/htdocs/664/dawnstr/1/newblog/urls.py", line 14, in <module>
    url(r'^blog/', include('blog.urls')),
  File "/data1/www/htdocs/664/dawnstr/1/site-packages/django/conf/urls/__init__.py", line 26, in include
    urlconf_module = import_module(urlconf_module)
  File "/data1/www/htdocs/664/dawnstr/1/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
ImportError: No module named urls

这是三个 urls.py 文件

主文件(mysite)

from django.conf.urls import patterns, include, url
from django.views.generic.base import TemplateView
from blog.models import Article
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),

    url(r'^books/', include('books.urls')),
    url(r'^blog/', include('blog.urls')),
    url(r'^$', TemplateView.as_view(template_name='index.html'), name='index'),
)

应用1(blog)

from django.conf.urls import patterns, url
from django.views.generic.base import TemplateView

urlpatterns = patterns('blog.views',
    url(r'^$', 'home_page'),
    url(r'^home/$', 'home_page', name='home'),
    url(r'^archive/$', 'article_list', name='archive'),
    url(r'^about/$', TemplateView.as_view(template_name='about.html'), name='about'),
    url(r'^search/$', 'search', name='search'),
    url(r'^article/(?P<pid>\d+)/(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/$', 'article_page', name='article_page'),
    url(r'^tag/(?P<slug>[\w-]+)/$', 'article_list_of_tag'),
    url(r'^category/(?P<slug>[\w-]+)/$', 'article_list_of_category'),
)

应用2(books)

from django.conf.urls import patterns, url

urlpatterns = patterns('books.views',
    url(r'^$', 'book_list'),
    url(r'(?P<id>\d+)/$', 'book_detail'),
    url(r'star/$', 'book_starred'),
)

暂时的解决办法 把 urlpattern 写在主urls上,不要分开写。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/986
 
4118 次点击  
文章 [ 2 ]  |  最新文章 9 年前
余星
Reply   •   1 楼
余星    9 年前

@VA 我把 django 1.6 的包也加到 sea 上,应该可以导入该 module 的,因为运行起来过。
在修改之前我只有一个主urls文件,能很好地运行;创建新的应用后,把指向不同应用的 url 分开放在相应的应用目录下的 urls ,然后在主urls中include它们,就出现了上面的错误。
我现在只能先把urlpattern都写在主urls,不能分开再使用 include

from django.conf.urls import patterns, include, url
from django.views.generic.base import TemplateView
from blog.models import Article

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', TemplateView.as_view(template_name='index.html'), name='index'),
)


urlpatterns += patterns('blog.views',
    url(r'^blog/$', 'home_page'),
    url(r'^blog/home/$', 'home_page', name='home'),
    url(r'^blog/archive/$', 'article_list', name='archive'),
    url(r'^blog/about/$', TemplateView.as_view(template_name='about.html'), name='about'),
)

urlpatterns += patterns('books.views',
    url(r'^books/$', 'book_list'),
    url(r'^books/(?P<id>\d+)/$', 'book_detail'),
    url(r'^books/star/$', 'book_starred'),
)
VA
Reply   •   2 楼
VA    9 年前

django.conf.urls这个module是从django 1.6开始才有的,SAE上面如果没记错的话默认的django版本是1.2.7,所以是没有这个module的。需要做的就是看他有没有1.6以上的版本,或者用老的方式做这个url