Python Can';t让CKEditor插件在django中工作
我正在尝试让CKEditor插件codesnippet在django管理员中工作,但无法。如果我没有在我的settings.py中定义任何CKEDIT_配置,则CKEditor可以工作。如果取出“extraPlugins”行,它也可以工作(它将成功地调整CKEDITOR_配置部分中定义的高度和宽度) 我按照以下说明安装了CKEditor: CKeditor位于/static/CKeditor中,代码片段位于/static/CKeditor/plugins中/ 在my settings.py中Python Can';t让CKEditor插件在django中工作,python,django,plugins,ckeditor,Python,Django,Plugins,Ckeditor,我正在尝试让CKEditor插件codesnippet在django管理员中工作,但无法。如果我没有在我的settings.py中定义任何CKEDIT_配置,则CKEditor可以工作。如果取出“extraPlugins”行,它也可以工作(它将成功地调整CKEDITOR_配置部分中定义的高度和宽度) 我按照以下说明安装了CKEditor: CKeditor位于/static/CKeditor中,代码片段位于/static/CKeditor/plugins中/ 在my settings.py中 C
CKEDITOR_UPLOAD_PATH = 'uploads/'
CKEDITOR_JQUERY_URL = '/static/js/jquery-2.1.1.min.js'
CKEDITOR_CONFIGS = {
'default': {
'toolbar': 'Full',
'height': 400,
'width': 900,
'removePlugins': 'stylesheetparser',
'extraPlugins': 'codesnippet',
},
}
我的管理员
from django.contrib import admin
from blog.models import Article, Category
from django.utils import text
from django import forms
from ckeditor.widgets import CKEditorWidget
class ArticleAdminForm(forms.ModelForm):
body = forms.CharField(widget=CKEditorWidget())
class Meta:
model = Article
我也尝试过只使用“插件”而不是“extraPlugins”(虽然不推荐这样做),但得到了相同的结果(即它破坏了CKEditor,并且该字段在管理中根本不显示)
提前感谢您的帮助
编辑2014年11月26日
好吧,这仍然不起作用。我很确定问题出在这里(从nginx错误日志)
该路径不正确(错误的双黑斜杠和额外的“ckeditor”目录)
My settings.py现在看起来像这样
CKEDITOR_UPLOAD_PATH = 'uploads/'
CKEDITOR_JQUERY_URL = '/static/js/jquery-2.1.1.min.js'
CKEDITOR_CONFIGS = {
'default': {
'toolbar':[ ['CodeSnippet', ], ],
'height': 400,
'width': 900,
'removePlugins': 'stylesheetparser',
'extraPlugins': 'codesnippet',
},
}
额外的插件行是导致nginx错误的原因,我不知道它是从哪里得到这条路径的
下面是更多可能有用的进一步信息
这是我的完整admin.py文件
from django.contrib import admin
from blog.models import Article, Category
from django.utils import text
from django import forms
from django.db import models
from ckeditor.widgets import CKEditorWidget
class ArticleAdminForm(forms.ModelForm):
body = forms.CharField(widget=CKEditorWidget())
class Meta:
model = Article
class ArticleAdmin(admin.ModelAdmin):
form = ArticleAdminForm
admin.site.register(Article, ArticleAdmin)
admin.site.register(Category)
我已将以下几行复制到我的ckedit.js文件中,并在plugins文件夹中的相应文件夹上拖动
config.extraPlugins = 'dialog';
config.extraPlugins = 'widget';
config.extraPlugins = 'dialogui';
config.extraPlugins = 'lineutils';
config.extraPlugins = 'clipboard';
config.extraPlugins = 'codesnippet';
config.toolbar_Full.push(['codesnippet']);
编辑12/1/14
Nginx配置文件(根据要求)
2014年3月12日编辑
完整nginx错误:
2014/11/26 14:36:16 [error] 3461#0: *1 open() "/srv/www/mysite/static//ckeditor/ckeditor/plugins/codesnippet/plugin.js" failed (2: No such file or directory), client: 71.235.164.91, server: 104.131.36.141,, request: "GET /static/ckeditor/ckeditor/plugins/codesnippet/plugin.js?t=E7KD HTTP/1.1", host: "mysite:8080", referrer: "http://mysite:8080/admin/blog/article/3/"
在my settings.py中
MEDIA_ROOT = '/srv/www/mysite/media/'
MEDIA_URL = '/media/'
STATIC_ROOT = '/srv/www/mysite/static'
STATIC_URL = '/static/'
CKEDITOR_UPLOAD_PATH = 'uploads/'
CKEDITOR_JQUERY_URL = '/static/js/jquery-2.1.1.min.js'
插件有各种依赖项,每个依赖项都有子依赖项,即:
- (作为其他子依赖项)
- (也有子依赖项)
CKEDITOR_CONFIGS = {
'default': {
'toolbar':[ ['CodeSnippet', ], ],
'height': 400,
'width': 900,
'removePlugins': 'stylesheetparser',
'extraPlugins': 'codesnippet',
},
}
因此,一旦所有的插件依赖项都安装好了,它就应该可以工作了。多年来,我一直在努力手动安装插件和依赖项 最后,我打包了所有我想要的插件 并将其放入我的STATICFILES\u DIRS./static/ckeditor/ckeditor/plugins和.js中的ckeditor目录中 我在中使用CKEditor,因此我的设置看起来像
CKEDITOR_UPLOAD_PATH = 'uploads'
CKEDITOR_IMAGE_BACKEND = 'pillow'
CKEDITOR_CONFIGS = {
'zinnia-content': {
'toolbar': 'Zinnia',
"extraPlugins":'codesnippet',
"codeSnippet_theme": "monokai_sublime",
'skin': 'moono-dark',
'toolbar_Zinnia': [
['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord'],
['Undo', 'Redo'],
['Scayt'],
['Link', 'Unlink', 'Anchor'],
['Image', 'Table', 'HorizontalRule', 'SpecialChar'],
['Source'],
['Maximize', 'Resize'],
'/',
['Bold', 'Italic', 'Underline', 'Strike',
'Subscript', 'Superscript', '-', 'RemoveFormat'],
['NumberedList', 'BulletedList', '-',
'Outdent', 'Indent', '-', 'Blockquote'],
['Styles', 'Format'],['CodeSnippet'],
'/',
['Smiley', 'About', 'Preview', 'Templates' ],
],
},
}
所以,希望没有百日咳,你的设置会像
CKEDITOR_CONFIGS = {
'default': {
'toolbar': 'Full',
"extraPlugins":'codesnippet',
"codeSnippet_theme": "monokai_sublime",
'skin': 'moono-dark',
},
}
我已经和同一个问题斗争了好几天,我想我找到了解决这个问题的方法 正如您也注意到的,它试图读取这个“static/ckeditor/ckeditor/plugins/codesippet/plugin.js”javascript,但它找不到它,即使您将插件放在“YOUR_PROJECT\u DIR/static/ckeditor/ckeditor/plugins”文件夹中“。原因是,django ckeditor没有在您的项目目录中搜索静态目录,而是在站点包中自己的路径中搜索自己的静态目录。因此,您可以执行以下操作作为解决方法
这可能是问题的另一个原因,而不是最初被问及的问题,因为这是几年前的事了。但是很多插件都不能与最新版本的django ckeditor 5.1.0兼容 我花了很长时间才弄清楚到底出了什么问题,只是最新版本没有包括所有的插件。如果您pip卸载并安装版本5.0.0,您将获得完整的插件套件
图这可能会帮助找到此线程的人。实际原因是plugin.js不是由CKEditor builder添加的。我不知道为什么会这样,但每个插件的存储库都有一个plugin.js。Shaun谢谢,我尝试过安装依赖项,但仍然没有成功。看起来它在某个地方找到了指向java脚本文件的错误路径(请参阅我对上面原始问题所做的编辑)。这可能是Nginx或Django静态设置问题,您能否提供您的Nginx配置和静态设置详细信息?否则,我建议您尝试使用Django dev服务器对此进行调试,以消除Nginx的影响。我已将我的Nginx配置文件添加到原始问题中。您是否也可以发布您的静态\u URL和静态\u根设置?ckeditor/ckeditor/plugins
CKEDITOR_UPLOAD_PATH = 'uploads'
CKEDITOR_IMAGE_BACKEND = 'pillow'
CKEDITOR_CONFIGS = {
'zinnia-content': {
'toolbar': 'Zinnia',
"extraPlugins":'codesnippet',
"codeSnippet_theme": "monokai_sublime",
'skin': 'moono-dark',
'toolbar_Zinnia': [
['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord'],
['Undo', 'Redo'],
['Scayt'],
['Link', 'Unlink', 'Anchor'],
['Image', 'Table', 'HorizontalRule', 'SpecialChar'],
['Source'],
['Maximize', 'Resize'],
'/',
['Bold', 'Italic', 'Underline', 'Strike',
'Subscript', 'Superscript', '-', 'RemoveFormat'],
['NumberedList', 'BulletedList', '-',
'Outdent', 'Indent', '-', 'Blockquote'],
['Styles', 'Format'],['CodeSnippet'],
'/',
['Smiley', 'About', 'Preview', 'Templates' ],
],
},
}
CKEDITOR_CONFIGS = {
'default': {
'toolbar': 'Full',
"extraPlugins":'codesnippet',
"codeSnippet_theme": "monokai_sublime",
'skin': 'moono-dark',
},
}