首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django CMS Apphook未加载

Django CMS Apphook未加载
EN

Stack Overflow用户
提问于 2018-08-07 20:56:56
回答 1查看 367关注 0票数 1

我有一个新的Django CMS设置,安装了以下组件(requirements.txt):

代码语言:javascript
复制
Django==1.11
Pillow==5.0.0
psycopg2-binary==2.7.4
django-ckeditor==5.4.0
django-cms==3.5.1
djangocms-text-ckeditor>=3.6.0

和以下文件结构:

代码语言:javascript
复制
.
├── main_app
│   ├── admin.py
│   ├── admin.pyc
│   ├── apps.py
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── migrations
│   ├── models.py
│   ├── models.pyc
│   ├── __pycache__
│   ├── tests.py
│   ├── urls.py
│   ├── urls.pyc
│   ├── views.py
│   └── views.pyc
├── project
│   ├── cms_apps.py
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── local_settings.py
│   ├── local_settings.pyc
│   ├── production.py
│   ├── production.pyc
│   ├── __pycache__
│   ├── settings.py
│   ├── settings.pyc
│   ├── static
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── templates
│   ├── 404.html
│   ├── base.html
│   └── ...
├── manage.py
└── requirements.txt

添加Apphook时,无法在高级页面设置中选择应用程序:

project/cms_apps.py:

代码语言:javascript
复制
from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool

@apphook_pool.register
class MainApphook(CMSApp):
    app_name = 'main_app'
    name = 'Main App'

    def get_urls(self, page=None, language=None, **kwargs):
        return ["main_app.urls"]

我在settings.py中安装的应用程序:

代码语言:javascript
复制
INSTALLED_APPS = [
    'custom_auth',
    'djangocms_admin_style',

    'django.contrib.sites',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'djangocms_text_ckeditor',
    'cms',
    'menus',
    'treebeard',
    'sekizai',
    'ckeditor',

    'main_app',
]

我已经根据http://docs.django-cms.org/en/latest/introduction/apphooks.html上的教程重新启动了服务器

请注意,这里没有project/cms_apps.pyc

据我所知,我完全遵循了Apphook教程,那么我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-08 00:27:42

好的,所以你需要在你的应用程序中有一个cms_apps.py模块来连接到内容管理系统中。

例如,我有一个名为djangocms_forms的应用程序,它的cms_apps.py如下所示;

代码语言:javascript
复制
class DjangoCMSFormsApphook(CMSApp):
    """ Add docs """
    name = _('Forms')
    urls = ['djangocms_forms.urls']


apphook_pool.register(DjangoCMSFormsApphook)

它有以下URL;

代码语言:javascript
复制
urlpatterns = [
    url(r'^forms/submit/$', FormSubmission.as_view(),
        name='djangocms_forms_submissions'),
    url(r'^forms/redirect/$', media_redireect,
        name='djangocms_forms_redirect')
]

然后,无需任何名称空间(如reverse('djangocms_forms_submissions') )即可访问这些URL

但是,您可以通过向CMSApp添加app_name属性来添加名称空间。例如,我有另一个应用,gallery,它的配置是这样的;

代码语言:javascript
复制
class GalleryApp(CMSApp):
    """ Gallery CMS app """
    app_name = 'gallery'
    name = _("Gallery App")
    urls = ["gallery.urls"]

然后,此应用程序的URL定义为,{% url "gallery:filterable_gallery_data" %}或在python中定义为reverse('gallery:filterable_gallery_data')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51727394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档