社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  问与答

Django "No module name urls" 错误

余星 • 9 年前 • 4839 次点击  

在做一个 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
 
4839 次点击  
文章 [ 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