【发布时间】:2015-01-12 23:54:48
【问题描述】:
我正在尝试让 CKEditor 插件 coden-p 在 django 管理员中工作,但无法。如果我没有在我的 settings.py 中定义任何 CKEDIT_CONFIGS,CKEditor 就可以工作。如果取出“extraPlugins”行(它会成功调整 CKEDITOR_CONFIGS 部分中定义的高度和宽度),它也可以工作。
我使用此处的说明安装了 CKEditor:https://github.com/shaunsephton/django-ckeditor
CKeditor 位于 /static/ckeditor,coden-p 位于 /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',
},
}
我的管理员.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
我也尝试过只使用“plugins”而不是“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',
},
}
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)
我已将以下行复制到我的 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']);
编辑 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;
}
}
编辑 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/"
在我的 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'
【问题讨论】:
-
这是 Nginx 或 Django STATIC 设置问题,能否提供您的 Nginx 配置和 STATIC 设置详细信息?否则,我建议您尝试使用 Django 开发服务器进行调试,以消除 Nginx 的影响。
-
我已将我的 nginx 配置文件添加到原始问题中。
-
能否请您也发布您的 STATIC_URL 和 STATIC_ROOT 设置?失败路径的 ckeditor/ckeditor/plugins 部分是正确的,所以我假设双斜杠会使事情变得混乱。所以要么你需要调整你的 Nginx conf,要么你需要调整你的 STATIC_* 设置。您的日志条目是否还有 HTTP 错误代码?从条目中不清楚失败是什么,甚至可能与权限有关。
-
已发布。我不认为这是一个权限问题。错误是“没有这样的文件或目录”。即使没有双斜杠,路径仍然是错误的......应该只有一个 ckeditor 目录。正确的路径是 /srv/www/mysite/static/ckeditor/plugins/codesn-p/plugin.js 而不是 /srv/www/mysite/static/ckeditor/ckeditor/plugins/codesn-p/plugin.js
标签: python django plugins ckeditor