jsn*_*now 2 python django plugins ckeditor
我正在尝试让 CKEditor 插件 codenippet 在 django 管理中工作,但无法做到。如果我没有在 settings.py 中定义任何 CKEDIT_CONFIGS,CKEditor 就可以工作。如果取出“extraPlugins”行(并且它将成功调整 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',
},
}
Run Code Online (Sandbox Code Playgroud)
我的管理员.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
Run Code Online (Sandbox Code Playgroud)
我也尝试过仅使用“插件”而不是“extraPlugins”(尽管不推荐这样做),但得到了相同的结果(它破坏了 CKEditor 并且文件根本不会在管理中显示)。
在此先感谢您的帮助!
编辑2014年11月26日
好吧,这仍然不起作用。我很确定问题是这样的(来自 nginx 错误日志)
2014/11/26 14:07:20 [error] 3265#0: *1 open() "/srv/www/mysite/static//ckeditor/ckeditor/plugins/codesnippet/plugin.js" failed
Run Code Online (Sandbox Code Playgroud)
该路径不正确(错误的双黑斜杠和额外的“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',
},
}
Run Code Online (Sandbox Code Playgroud)
Extra Plugins 行是导致 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)
Run Code Online (Sandbox Code Playgroud)
我已将以下行复制到我的 ckedit.js 文件中,并将其拖动到插件文件夹中的相应文件夹上。
config.extraPlugins = 'dialog';
config.extraPlugins = 'widget';
config.extraPlugins = 'dialogui';
config.extraPlugins = 'lineutils';
config.extraPlugins = 'clipboard';
config.extraPlugins = 'codesnippet';
config.toolbar_Full.push(['codesnippet']);
Run Code Online (Sandbox Code Playgroud)
编辑 2014 年 12 月 1 日
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;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑2014年12月3日
完整的 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/"
Run Code Online (Sandbox Code Playgroud)
在我的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'
Run Code Online (Sandbox Code Playgroud)
小智 5
代码片段插件有各种依赖项,每个依赖项都有子依赖项,即:
我必须至少在 ckeditor/plugins 路径中添加代码片段、小部件和行实用程序才能使其正常工作,并使用以下设置使按钮显示在工具栏中。
CKEDITOR_CONFIGS = {
'default': {
'toolbar':[ ['CodeSnippet', ], ],
'height': 400,
'width': 900,
'removePlugins': 'stylesheetparser',
'extraPlugins': 'codesnippet',
},
}
Run Code Online (Sandbox Code Playgroud)
因此,一旦所有插件依赖项都安装完毕,它就应该可以工作了。