【发布时间】:2011-08-02 01:51:48
【问题描述】:
如果有人知道如何让 django-cms 与 grappelli 一起玩,请提供一些提示
【问题讨论】:
标签: django integration django-cms django-grappelli
如果有人知道如何让 django-cms 与 grappelli 一起玩,请提供一些提示
【问题讨论】:
标签: django integration django-cms django-grappelli
好吧,我刚刚经历了一场相当史诗般的冒险,其中的故事可能对你有所帮助。上述冒险的终点是让 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。所以通过注释掉这个文件中的第二行:
您的站点包目录/cms/templates/cms/toolbar/toolbar.html
加载 jquery.min.js,uploadify 按预期工作。 Soooo ...如果您只想让 django-cms 与 grappelli 一起使用,以便您可以使用文件浏览器,那么上述内容可能会有所帮助。 Here 是我的设置文件供参考。
【讨论】:
我的解决方案是实现 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/`
修改settings.py:将INSTALLED_APPS从元组更改为列表
重启网络服务器
./manage.py collectstatic --settings=myproject.settings_cms
您的常规站点将继续正常运行。要编辑禁用 grappelli 的 django-cms 页面,请转到 http://cms.example.com/admin/cms/page/
【讨论】:
我曾经制作了一个支持 grappelli 的 django-cms fork on github,它有点过时了,但也许可以帮助你入门或可能你想贡献。
【讨论】: