2013-02-27 57 views
0

我在将新应用程序添加到Django时遇到问题。在urls.py导入错误在/ admin /没有模块命名wiki,urls.py包括wiki.urls失败

一个换行符的管理员,我确切地知道哪条线,这其中包括我( '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 
) 

的其他应用仍然工作。如果我去我的民意调查页面,它的作品。示例和帐户应用程序也起作用。该/维基/页返回相同的导入错误的/管理/,但在这行模板绘制的期间发生的错误:

<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行,__导入__(名称)中的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', 
) 
+0

你没有命名空间,您的网址(R'^ wiki /',包括('apps.wiki.urls')), – catherine 2013-03-12 00:57:29

+0

谢谢凯瑟琳,我也会看看。 – 2013-03-13 20:15:19

回答

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”导航到上一个目录下找到应用程序目录

0

你有没有对参数INSTALLED_APPS添加apps.wikisettings.py

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

+0

或者你可以在这里发布你的'INSTALLED_APPS'参数吗? – WBAR 2013-02-27 21:02:49

+0

将'admin.autodiscover()'移动到urls.py的底部有一个奇怪的结果:它禁用了应用模型的管理页面链接并删除了“添加”按钮。我一直对此感到困惑,直到我想撤销这一改变,并且回到正常的管理员。 – 2013-03-12 15:01:18

相关问题