首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让CKEditor插件在django中工作

无法让CKEditor插件在django中工作
EN

Stack Overflow用户
提问于 2014-11-15 18:57:39
回答 5查看 7.3K关注 0票数 2

我试图让CKEditor插件,代码,工作在django管理,但无法。如果我没有在我的CKEditor中定义任何CKEDIT_CONFIGS,那么CKEDIT_CONFIGS就能工作。如果去掉"extraPlugins“行(它将成功地调整CKEDITOR_CONFIGS部分中定义的高度和宽度),它也能工作。

我使用下面的说明安装了CKEditor:https://github.com/shaunsephton/django-ckeditor

CKeditor位于/静态/ckeditor中,codesnippet位于/静态/ckeditor/plugins/中。

在我的settings.py里

代码语言:javascript
复制
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

代码语言:javascript
复制
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错误日志)

代码语言:javascript
复制
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现在看起来像这样。

代码语言:javascript
复制
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文件

代码语言:javascript
复制
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文件中,并拖动插件文件夹中的适当文件夹。

代码语言:javascript
复制
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配置文件(根据请求)

代码语言:javascript
复制
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;
    }
}

编辑12/3/14

完整的nginx错误:

代码语言:javascript
复制
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里

代码语言:javascript
复制
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'
EN

回答 5

Stack Overflow用户

发布于 2014-11-26 11:47:33

代码段插件有各种依赖项,每个依赖项都有子依赖项,即:

我必须至少在ckeditor/plugins路径中添加代码段、Widget和Line Utils才能使其工作,并使用下面的设置将按钮显示在工具栏中。

代码语言:javascript
复制
CKEDITOR_CONFIGS = {
   'default': {
        'toolbar':[ ['CodeSnippet', ], ],
        'height': 400,
        'width': 900,
        'removePlugins': 'stylesheetparser',
        'extraPlugins': 'codesnippet',
   },
}

因此,一旦您所有的插件依赖关系都安装好了,它就能工作了。

票数 5
EN

Stack Overflow用户

发布于 2014-12-22 03:00:48

我和同样的问题斗争了好几天,我想我找到了解决这个问题的办法。

正如您也注意到的,它尝试读取这个"static/ckeditor/ckeditor/plugins/codesnippet/plugin.js“javascript,但它无法找到它,即使您已经将插件放在"YOUR_PROJECT_DIR/static/ckeditor/ckeditor/plugins".文件夹中。原因是django-ckeditor不是在项目目录中搜索静态目录,而是在site-packages中自己的路径中搜索自己的静态目录。因此,您可以执行以下操作以解决问题。

  1. 用您的插件(额外的插件,如CodeSnippet)使用它的生成器构建CodeSnippet,用从CKEditor网站分别下载的独立版本替换CodeSnippet插件及其依赖项。(插件的文件夹中没有plugin.js文件)
  2. 下载并解压缩它,您将有一个名为“ckeditor”的文件夹,其中包含“lang”,“plugins”作为子文件夹。
  3. 替换python站点-package文件夹中“ckeditor”文件夹中“静态/ckeditor/ckeditor”中的整个“ckeditor”目录。例如,django-ckeditor安装在“C:\Python27 27\Lib\site-packages”中,您将看到'ckedior',将'static/ ckeditor /ckeditor‘文件夹替换为您构建的ckeditor文件夹。或者你会有虚拟或其他什么,你可以在它自己的网站-包。
  4. 添加'extraPlugins‘设置,就像您在问题描述中所做的那样,运行python,您将在管理中看到'CodeSnippet’插件。

P.S.:

  1. 对于3.,您还可以将整个“站点-包/ckeditor”文件夹复制到您的PROJECT_DIR中,并进行替换。
  2. 在我的实验中,添加或删除插件或对"YOUR_PROJECT_DIR/static/ckeditor“中的配置文件进行更改并不会显示任何效果,即使您删除了整个目录。
  3. 因此,我想我们仍然有一些设置是不正确的,比如STATIC_URL、STATIC_ROOT等等。我还没有弄明白为什么,因为我也是一个初学者,我没有看到你的设置有什么问题。如果找到了最终的“解决方案”,我将试图找出根本原因,并修正这个答案。也许软件包作者“shaunsephton”可以很容易地理解它并提供一些帮助。:D
票数 1
EN

Stack Overflow用户

发布于 2014-12-12 13:14:01

我与此斗争了很久,试图手动安装插件和依赖项。

最后,我用CKEditor生成器打包了我想要的所有插件,并把它放到了STATICFILES_DIRS中的ckeditor目录中。/静态/ckeditor/ckeditor/plugins& .js等

我在https://github.com/django-blog-zinnia/zinnia-wysiwyg-ckeditor中使用https://github.com/django-blog-zinnia/zinnia-wysiwyg-ckeditor,所以我的设置看起来.

代码语言:javascript
复制
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' ],
            ],
        },
    }

所以希望,如果没有Zinnia,你的设定会像.

代码语言:javascript
复制
    CKEDITOR_CONFIGS = {
        'default': {
            'toolbar': 'Full',
            "extraPlugins":'codesnippet',
            "codeSnippet_theme": "monokai_sublime",
            'skin': 'moono-dark',                 
        },
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26949506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档