在/ admin /上的ImportError没有名为wiki的模块,urls.py包含wiki.urls失败

时间:2013-02-27 20:57:00

标签: django django-urls

我在向Django添加新应用时遇到问题。

urls.py中的一行打破了管理员,我确切地知道哪一行,它是我所包含的地方('apps.wiki.urls')

urls.py

from django.conf.urls.defaults import patterns, include, url
from django.views.generic.simple import redirect_to, direct_to_template
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', direct_to_template, { "template" : "welcome.html"}),
    url(r'^accounts/', include('registration.backends.default.urls')),
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^examples/', include('apps.examples.urls')),
    url(r'^polls/', include('apps.polls.urls')),
    url(r'^wiki/', include('apps.wiki.urls')), #Commenting out this line restores admin
)

其他应用仍然有效。如果我进入我的民意调查页面,它就可以了。示例和帐户应用程序也有效。 / wiki /页面返回与/ admin /相同的ImportError,但在此行上模板渲染期间出现错误:

<a href="{% url wiki_article_add %}">Create new article</a>

以下是未能包含的wiki.urls.py文件:

from django.conf.urls.defaults import *
from apps.wiki.models import Article

urlpatterns = patterns('',
    url(r'^$', 
        'django.views.generic.list_detail.object_list',
        {
            'queryset': Article.published.all(),
        },
        name='wiki_article_index'),
    url(r'^article/(?P<slug>[-\w]+)$', 
        'django.views.generic.list_detail.object_detail',
        {
            'queryset': Article.objects.all(),
        },
        name='wiki_article_detail'),
    url(r'^history/(?P<slug>[-\w]+)$',
        'wiki.views.article_history',
        name='wiki_article_history'),
    url(r'^add/article$',
        'wiki.views.add_article',
        name='wiki_article_add'),
    url(r'^edit/article/(?P<slug>[-\w]+)$',
        'wiki.views.edit_article',
        name='wiki_article_edit'),
)

任何人都知道为什么这个模块不导入?维基目录包含:

__init__.py
forms.py
models.py
urls.py
views.py

编辑:我尝试将admin.autodiscover()移到urls.py的底部,没有变化。 在import_module,第35行,__ import __(name)中的django / utils / importlib.py中发生异常,并且此错误导致其他应用程序中出现多个错误。我说其他安装的应用程序仍然有用,但我发现它们返回错误。我的民意调查应用程序(是的,标准的Django入门民意调查应用程序)将在我提交投票时返回相同的错误。我应该发布完整的跟踪吗?

这是我的INSTALLED_APPS设置

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.markup',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'djcelery',
    'bootstrap_toolkit',
    'registration',
    'apps.examples',
    'apps.polls',
    'apps.wiki',
    'south',
)

2 个答案:

答案 0 :(得分:1)

http://codespatter.com/2009/04/10/how-to-add-locations-to-python-path-for-reusable-django-apps/

相信此解决方案的上述链接。

隐藏在“apps”目录中的可重用应用程序没有作为我的python路径的一部分被选中。将其添加到您的设置文件以解决问题。

import sys

PROJECT_ROOT = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(PROJECT_ROOT, "../apps"))

我的设置在他们自己的目录中,因此我使用“../apps”导航一个目录以查找应用程序目录

答案 1 :(得分:0)

您是否已将apps.wiki添加到参数settings.py上的INSTALLED_APPS

并尝试将admin.autodiscover()行向下移动到urls.py的最底部,以便它是该文件中的最后一行。 (基于2079898