django cms apphook - 无法找到名为urls的模块错误

1 投票
3 回答
2320 浏览
提问于 2025-04-16 14:46

我正在学习django-cms。我尝试制作一个自定义插件,结果还算成功,但当我试图把这个自定义插件连接到apphook时,出现了一个错误,提示:

没有名为urls的模块。

我按照django cms网站文档中的教程创建了cms_app.py文件。目前我的应用目录里有制作django cms自定义插件所需的所有文件,还有一个额外的cms_app.py文件。

是不是我的网址设置有问题,或者我需要在我的应用目录里创建一个新的urls.py文件呢?

我的cms_app.py文件和教程里的一模一样。

编辑 - 1

我使用以下命令创建了一个名为myproject的项目:

python django-admin.py startproject myproject

在参考了cms的教程后,我使用基本命令创建了一个名为first的插件:

python manage.py startapp first

现在这个插件运行得很好,在尝试使用apphook之前,目录结构是:

first/
    __init__.py
    cms_plugins.py
    models.py
    tests.py
    views.py

现在在尝试将应用连接到apphook后,目录结构是:

first/
    __init__.py
    cms_app.py
    cms_plugins.py
    models.py
    tests.py
    views.py

我的cms_app.py文件内容如下:

from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool
from django.utils.translation import ugettext_lazy as _

class FirstApp(CMSApp):
    name = _("First App") # give your app a name, this is required
    urls = ["first.urls"] # link your app to url configuration(s)

apphook_pool.register(FirstApp) # register your app

我在myproject文件夹里有一个urls.py文件,内容如下:

from django.conf.urls.defaults import *
from django.contrib import admin
from django.conf import settings


# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'myproject.views.home', name='home'),
    # url(r'^myproject/', include('myproject.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
        url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('cms.urls')),

)

if settings.DEBUG:
    urlpatterns = patterns('',
        (r'^' + settings.MEDIA_URL.lstrip('/'), include('appmedia.urls')),
    ) + urlpatterns

我已经按照教程的说明重启了服务器,但还是没有成功。 有没有人知道我的简单应用出了什么问题?!

3 个回答

0

听起来有点奇怪,但错误信息 'No module named ...' 通常意味着你有循环导入的问题,也就是说你试图导入同一个模块两次。

0

你指定的urls模块存在吗?它在你的Python路径中吗?你连接到apphooks的urls必须在使用这个apphook之前就存在,而且这个模块必须是可以被导入的。

把你的代码贴出来会更方便我们帮你解决问题。

0

我猜你正在做这个教程:

http://docs.django-cms.org/en/2.1.3/getting_started/tutorial.html

我没有这个项目的最新版本,但我知道你需要做类似于这个步骤的事情:

http://docs.django-cms.org/en/2.1.3/getting_started/tutorial.html#url-configuration

编辑

你实际上需要在“first”文件夹下创建一个 urls.py 文件……而且你还需要一个带有 urls.py 文件的 cms 模块。

编辑 2

我的基础文件夹结构大概是这样的:

src/
    cms/
    __ init__.py
    manage.py
    urls.py
    views.py

撰写回答