Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t让CKEditor插件在django中工作_Python_Django_Plugins_Ckeditor - Fatal编程技术网

Python Can';t让CKEditor插件在django中工作

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插件codesnippet在django管理员中工作,但无法。如果我没有在我的settings.py中定义任何CKEDIT_配置,则CKEditor可以工作。如果取出“extraPlugins”行,它也可以工作(它将成功地调整CKEDITOR_配置部分中定义的高度和宽度)

我按照以下说明安装了CKEditor:

CKeditor位于/static/CKeditor中,代码片段位于/static/CKeditor/plugins中/

在my 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',
       },
   }
我的管理员

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/plugins路径中添加代码片段、小部件和行util,以使其工作,并使用以下设置使按钮显示在工具栏中

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没有在您的项目目录中搜索静态目录,而是在站点包中自己的路径中搜索自己的静态目录。因此,您可以执行以下操作作为解决方法

  • 使用你的插件(额外的插件,如CodeSnippet)构建CKEditor,用单独从CKEditor网站下载的独立版本替换CodeSnippet插件及其依赖项。(插件文件夹中没有plugin.js文件)
  • 下载并解压,您将拥有一个名为“ckeditor”的文件夹,其中“lang”、“plugins”作为子文件夹
  • 替换python站点包文件夹中“ckeditor”文件夹中“static/ckeditor/ckeditor”中的整个“ckeditor”目录。例如,django ckeditor安装在“C:\Python27\Lib\site packages”中,您将看到“ckedior”,将“static/ckeditor/ckeditor”文件夹替换为构建的ckeditor文件夹。或者你会有virtualenv或者其他什么,你可以在它自己的网站包里做
  • 添加“extraPlugins”设置,就像您在问题描述中所做的那样,然后运行python manage.py runserver,您将在管理员中看到“CodeSnippet”插件
  • 附言:

  • 对于3,您还可以将整个“site packages/ckeditor”文件夹复制到您的项目目录中,并进行替换
  • 根据我的实验,添加或删除插件或更改“YOUR_PROJECT_DIR/static/ckeditor”中的配置文件不会显示任何效果,即使您删除了整个目录
  • 因此,我想仍然有一些设置我们没有做对,比如静态URL、静态根等等。我还不明白为什么,因为我也是初学者,我不知道你的设置有什么问题。我将试图找出根本原因,并在找到最终“解决方案”后修改此答案。也许软件包作者“shaunsephton”可以很容易地找到答案并提供一些帮助:D

  • 这可能是问题的另一个原因,而不是最初被问及的问题,因为这是几年前的事了。但是很多插件都不能与最新版本的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',                 
            },
        }