0

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

urls.py 中的一行打破了管理员,我确切地知道哪一行,它是我包含的位置('apps.wiki.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'),
)

有人知道为什么这个模块不导入吗?wiki 目录包含:

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

编辑:我尝试将 admin.autodiscover() 移动到 urls.py 的底部,没有变化。异常发生在 django/utils/importlib.py 的 import_module 第 35 行 __ import __(name) 中,此错误导致其他应用程序出现多个错误。我说其他安装的应用程序仍然有效,但我发现它们返回错误。当我提交投票时,我的投票应用程序(是的,标准的 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',
)
4

2 回答 2

1

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

归功于此解决方案的上述链接。

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

import sys

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

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

于 2013-03-13T15:40:38.297 回答
0

您是否添加apps.wikisettings.pyon 参数INSTALLED_APPS

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

于 2013-02-27T21:01:49.857 回答