如果有人知道如何让 django-cms 与 grappelli 一起玩,请提供一些提示
3 回答
好吧,我刚刚经历了一场相当史诗般的冒险,其中的故事可能对你有所帮助。上述冒险的终点是让 django-cms 2.1.3 与django-filebrowser-no-grappelli 一起工作. 虽然这听起来可能与您想要的相反,但我最终还是因为我真正想要的是让 django-cms 与文件浏览器一起工作。没有 grappelli 虽然标准的 django-filebrowser 不能按预期工作。但是使用 grappelli django-cms 不能按预期工作。引用莎士比亚的话,这就是问题所在。让 django-cms 与 filebrowser 一起工作相对简单,除了当尝试使用 uploadify(文件浏览器附带)上传文件时,在文件对话框中选择文件后,什么也没发生。最终我发现这是因为 jquery 库被加载了两次:一次是由 filebrowser 用于 uploadify,一次是由 django-cms。因此,通过注释掉此文件中的第二行:
您的站点包 dir/cms/templates/cms/toolbar/toolbar.html
加载 jquery.min.js,uploadify 按预期工作。Soooo ...如果您只想让 django-cms 与 grappelli 一起使用,以便您可以使用文件浏览器,那么上述内容可能会有所帮助。这是我的设置文件供参考。
我的解决方案是实现 2 个子域,“www”和“cms”,在每个子域中,Django 站点的一个单独实例使用不同的 STATIC_ROOT 和修改后的 INSTALLED_APPS 运行。grappelli 在“www”子域中运行。它不在“cms”子域中运行,因此您可以在那里使用 django-cms。
设置子域:
cms.example.com
修改您的网络服务器以提供此子域。使用与主 django 站点相同的设置,但指向不同的脚本处理程序。例如,如果使用 wsgi 指示服务器运行
wsgi_cms.py
cp wsgi.py wsgi_cms.py
. 编辑wsgi_cms.py
和更改行os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
至os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings_cms")
settings_cms.py
:
:
from settings import *
INSTALLED_APPS.remove('grappelli.dashboard')
INSTALLED_APPS.remove('grappelli')
STATIC_ROOT = os.path.join('/what/ever/static_cms/')
STATIC_URL = '/static_cms/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/`
modify
settings.py
:INSTALLED_APPS
从元组更改为列表重启网络服务器
./manage.py collectstatic --settings=myproject.settings_cms
您的常规站点照常继续。要编辑禁用 grappelli 的 django-cms 页面,请访问http://cms.example.com/admin/cms/page/
我曾经在 github 上制作了一个支持 grappelli 的 django-cms fork,它有点过时了,但可能会帮助你入门或可能你想贡献。