【问题标题】:Django - importError at /blog. (No module named urls)Django - /blog 处的 importError。 (没有名为 urls 的模块)
【发布时间】:2013-06-04 03:13:51
【问题描述】:

在学习 Django 教程(本书是 Python Web Development with Django)时,我遇到了一个导入错误。

我已经在此处和 Google 上寻找解决方案,但找不到可行的解决方案。

我的错误是ImportError at /blog. No module named urls.

我正在使用 django 1.5.1

我的文件是结构 -

 - mysite
     manage.py
     - blog
        __init__.py
        models.py
        tests.py
        urls.py
        views.py
        - templates
            archive.html
     - mysite
        __init__.py
        settings.py
        urls.py
        wsgi.py

mysite/blog/urls.py

from django.conf.urls.defaults import patterns, include, url
from mysite.blog.views import archive

urlpatterns = patterns('',
        url(r'^$', archive),
)

mysite/blog/view.py

from django.template import loader, Context
from django.http import HttpResponse
from mysite.blog.models import BlogPost

def archive(requset):
    posts = BlogPost.objects.all()
    t = loader.get_template("archive.html")
    c = context({ 'posts': posts })
    return HttpResponse(t.render(c))

mysite/mysite/urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
       url(r'^admin/', include(admin.site.urls)),
       url(r'^blog/', include('mysite.blog.urls')),
      # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

)

setting.py

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    'django.contrib.admindocs',
    'blog',
)

追溯

Traceback Switch to copy-and-paste view

    /usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response

                            resolver_match = resolver.resolve(request.path_info)

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in resolve

                    for pattern in self.url_patterns:

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in url_patterns

                patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in urlconf_module

                    self._urlconf_module = import_module(self.urlconf_name)

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/utils/importlib.py in import_module

            __import__(name)

        ...
    ▶ Local vars
    /home/han/Django/mysite/mysite/urls.py in <module>

               url(r'^blog/', include('mysite.blog.urls')),

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/conf/urls/__init__.py in include

                urlconf_module = import_module(urlconf_module)

        ...
    ▶ Local vars
    /usr/local/lib/python2.7/dist-packages/django/utils/importlib.py in import_module

            __import__(name)

        ...
    ▶ Local vars 

【问题讨论】:

  • 你能用整个堆栈跟踪来编辑问题吗?
  • 您的settings.py 中是否包含mysite

标签: python django ubuntu python-2.7


【解决方案1】:

我认为你必须改变这一行:

url(r'^blog/', include('mysite.blog.urls')),

到这里:

url(r'^blog/', include('blog.urls')),

希望对你有帮助!

【讨论】:

  • 我尝试了一些解决方案。我尝试过的解决方案之一。但它不能给我...无论如何,谢谢!
  • 同样的错误?您必须复制问题中的完整堆栈跟踪
【解决方案2】:

更改此文件 mysite/blog/urls.py 从 django.conf.urls.defaults 导入模式,包括,url
到 from django.conf.urls 导入模式,包含,url

【讨论】:

    【解决方案3】:

    我也遇到了同样的问题,但我的做法与@Haimei 的做法相反

    mysite/blog/urls.py from blog.views import archive 将其更改为

    from mysite.blog.views import archive
    

    它奏效了。

    还要确保 .defaults 已从 from django.conf.urls.defaults 导入模式,包含,url

    【讨论】:

      【解决方案4】:

      我的解决方案在这里:

      mysite/blog/urls.py

      from mysite.blog.views import archive 
      

      from blog.views import archive
      

      mysite/blog/view.py

      from mysite.blog.models import BlogPost 
      

      from blog.models import BlogPost
      

      mysite/mysite/urls.py

      url(r'^blog/', include('mysite.blog.urls')), 
      

      url(r'^blog/', include('blog.urls')),
      

      这里我建议你在 settings.py 中将 DEBUG 设置为 true。当出现错误时,它可以告诉您应用程序停止的位置。在这种情况下,你只需要跳到这个地方。最好调试一下。

      【讨论】:

        猜你喜欢
        • 2012-06-26
        • 2015-09-13
        • 1970-01-01
        • 2017-11-02
        • 2012-12-09
        • 2019-01-23
        • 2016-11-18
        • 1970-01-01
        • 2023-03-07
        相关资源
        最近更新 更多