Skip to main content
 首页 » 编程设计

python之django cms 和 zinnia 骨架覆盖

2025年05月04日30小虾米

我正在尝试将 zinnia 连接到 django-cms 3.0

我已经推出了 zinnia,它运行良好。现在我正在尝试开始改变风格。更具体地说,templates/zinnia/skeleton.html 覆盖。

一旦我添加模板以覆盖原始模板 - url reverse 在失败时开始。

NoReverseMatch at /en-us/blog/ 
Reverse for 'entry_archive_index' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

所有 url 都使用命名空间,如 {% url 'zinnia:entry_archive_index' %} 但在 shell 中反向也只是失败。

还可以做些什么来调试它?也许是因为本地化?

我有 url 配置:

from django.conf.urls import patterns, url, include 
from django.conf.urls.i18n import i18n_patterns 
from django.contrib import admin 
from django.conf import settings 
 
admin.autodiscover() 
 
urlpatterns = i18n_patterns( 
    '', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^blog/', include('zinnia.urls', namespace='zinnia')), 
    url(r'^comments/', include('django.contrib.comments.urls')), 
    url(r'^tinymce/', include('tinymce.urls')), 
    url(r'^', include('cms.urls')), 
) 
 
if settings.DEBUG: 
    urlpatterns = patterns( 
        '', 
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve', 
            {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), 
        url(r'', include('django.contrib.staticfiles.urls')), 
    ) + urlpatterns 

设置:

INSTALLED_APPS = ( 
    'django.contrib.auth', 
    'django.contrib.admin', 
    'django.contrib.sites', 
    'django.contrib.comments', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.contenttypes', 
    'my_main_django_cms_app', 
    'cms', 
    'mptt', 
    'menus', 
    'south', 
    'sekizai', 
    'djangocms_text_ckeditor', 
    'djangocms_picture', 
    'djangocms_inherit', 
    'djangocms_googlemap', 
    'cmsplugin_contact', 
 
    'tinymce', 
    'tagging', 
    'zinnia_threaded_comments', 
    'zinnia', 
    'cmsplugin_zinnia', 
) 

而my_main_django_cms_app结构是

. 
├── cms_plugins.py 
├── forms.py 
├── __init__.py 
├── manage.py 
├── models.py 
├── settings.py 
├── static 
├── templates 
│   ├── base.html 
│   ├── home.html 
│   └── zinnia 
│       └── skeleton.html 
├── urls.py 
├── wsgi.py 

还有我的版本:

Django==1.6.5 
Pillow==2.4.0 
South==0.8.4 
argparse==1.2.1 
beautifulsoup4==4.3.2 
cmsplugin-contact==1.0.0 
cmsplugin-zinnia==0.6 
django-app-namespace-template-loader==0.1 
django-blog-zinnia==0.14.1 
django-classy-tags==0.5.1 
django-cms==3.0 
django-mptt==0.6.0 
django-reversion==1.8.1 
django-sekizai==0.7 
django-tagging==0.3.2 
django-tinymce==1.5.2 
django-xmlrpc==0.1.5 
djangocms-admin-style==0.2.2 
djangocms-googlemap==0.0.5 
djangocms-inherit==0.0.1 
djangocms-picture==0.0.2 
djangocms-text-ckeditor==2.1.6 
gevent==1.0.1 
greenlet==0.4.2 
gunicorn==19.0.0 
my_main_django_cms_app==0.1 
html5lib==1.0b3 
ipdb==0.8 
ipython==2.1.0 
psycopg2==2.5 
pyparsing==2.0.2 
pytz==2014.4 
six==1.7.2 
wsgiref==0.1.2 
zinnia-threaded-comments==0.2 

请您参考如下方法:

几天来我一直在尝试将 zinnia 集成到 django cms 中,这是我的经验,这让我到了可以为 zinnia 使用我自己的 django cms 模板的地步,但我仍然没有得到菜单提供cmsplugin_zinnia去工作。

与您的设置相比,我进行了以下更改:

  • 已删除 zinnia命名空间,所以 url(r'^blog/', include('zinnia.urls', namespace='zinnia'))变成 url(r'^blog/', include('zinnia.urls')) .
  • 已添加 app_name = 'zinnia'至 cmsplugin_zinnia.cmsapp.ZinniaApphook
  • 已搬家 cms在 zinnia 之后和之前 cmsplugin_zinnia来自 settings.py在 demo_cmsplugin_zinnia

有了这个,我可以选择 Zinnia Weblog作为Application在 Advanced Settings 下对于一个新的 Django CMS 页面,并给它一个独特的 Application Instance Name正如 Django CMS docs. 中所建议的那样页面名称或其 url/slug 字段无关紧要。

从这里我可以想出我自己的 skeleton.html没有提及 zinnia不管怎样,还有zinnia.base.html扩展我的新骨架模板。

但是,此时 cmsplugin_zinnia docs建议:

  • '注册 apphook 后,您可以删除包含的 zinnia.urls在urls.py然后重新启动服务器以查看它的全部效果。',

但我得到的是 NoReverseMatch at /name_of_my_blog_app/异常,只有在我包含 zinnia.urls 时才会消失如上没有namespace .

由于您最初的帖子已经过去了几周,您现在可能已经解决了这个问题。如果没有,我希望这能为您指明正确的方向。如果您在某个时候遇到相同的问题 (EntryMenu not loaded) 并且能够解决,请告诉我。