我正在尝试使用CKEditor插件,codesnippet,在django管理员中工作,但我无法。如果我没有在settings.py中定义任何CKEDIT_CONFIGS,则CKEditor可以正常工作。如果取出" extraPlugins"它也有效。 line(并成功调整CKEDITOR_CONFIGS部分中定义的高度和宽度)。
我使用以下说明安装了CKEditor:https://github.com/shaunsephton/django-ckeditor
CKeditor位于/ static / ckeditor,codesnippet位于/ static / ckeditor / plugins /
在我的settings.py
中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',
},
}
我的admin.py
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并且管理员根本没有显示出来)。
提前感谢您的帮助!
编辑11/26/14
好的,所以这仍然没有用。我很确定问题是这个(来自nginx错误日志)
2014/11/26 14:07:20 [error] 3265#0: *1 open() "/srv/www/mysite/static//ckeditor/ckeditor/plugins/codesnippet/plugin.js" failed
这条道路是不对的(错误的双黑色斜线和额外的" ckeditor"目录")。
我的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配置文件(根据要求)
server {
listen 8080;
server_name mysite.com;
access_log /srv/www/mysite/logs/access-dev.log;
error_log /srv/www/mysite/logs/error-dev.log;
charset utf-8;
#Django admin css
location /static/admin {
alias /srv/www/mysite/static/admin;
}
#Django static files
location /static {
alias /srv/www/mysite/static/;
}
#Django media files
location /media {
alias /srv/www/mysite/media/;
}
#Uwsgi handles all other requests
location / {
auth_basic "Restricted";
auth_basic_user_file /srv/www/mysite/.nginxpwd;
uwsgi_pass unix:/var/uwsgi/uwsgi_at-dev.sock;
include uwsgi_params;
}
}
EDIT 12/3/14
完整的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/"
在我的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'
答案 0 :(得分:4)
Code Snippet插件有各种依赖项,每个依赖项都有子依赖项,即:
我必须至少在ckeditor / plugins路径中添加Code Snippet,Widget和Line Utils才能使其工作,并使用以下设置让按钮显示在工具栏中。
CKEDITOR_CONFIGS = {
'default': {
'toolbar':[ ['CodeSnippet', ], ],
'height': 400,
'width': 900,
'removePlugins': 'stylesheetparser',
'extraPlugins': 'codesnippet',
},
}
因此,一旦安装了所有插件依赖项,它就应该可以工作。
答案 1 :(得分:1)
我几天来一直在和同样的问题作斗争,我想我找到了解决这个问题的方法。
正如您已经注意到的那样,它试图读取这个“static / ckeditor / ckeditor / plugins / codesnippet / plugin.js”javascript,但它无法找到它,即使您已将插件放在“YOUR_PROJECT_DIR”文件夹中/静态/ CKEditor的/ CKEditor的/插件”。原因是,django-ckeditor不搜索项目目录中的静态目录,它在site-packages中自己的路径中搜索自己的静态目录。因此,您可以执行以下操作作为解决方法。
P.S:
答案 2 :(得分:0)
我多次尝试手动安装插件和依赖项。
最后,我用CKEditor Builder打包了我想要的所有插件 并将其放入我的STATICFILES_DIRS中的ckeditor目录中。 / static / ckeditor / ckeditor / plugins& .js等
我在https://github.com/django-blog-zinnia/zinnia-wysiwyg-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',
},
}
答案 3 :(得分:0)
这可能是问题的原因不同于原始问题,因为它是在几年前。但是很多插件都没有使用最新版本的django-ckeditor,版本5.1.0。
花了我很多时间来解决问题 - 而且最新版本不包括所有插件。如果您点击卸载和安装版本5.0.0,您将获得完整的插件套件。
这可能会帮助找到这个帖子的人。
答案 4 :(得分:0)
实际原因是CKEditor构建器未添加plugin.js。我不知道为什么会这样,但每个插件的 存储库都有一个plugin.js。