django管理ckeditor集成。

django-ckeditor的Python项目详细描述


django ckeditor 编辑

注意:django ckeditor 5的代码向后移动与4.5.1不兼容。

文件上载支持已移动到ckeditor_uploader。URL位于ckeditor_uploader.url中,而对于文件上载小部件,必须使用richtextuploadingfield而不是richtextfield。

django管理员编辑集成。 提供一个 richtextfield richtextuploadingfield ckeditorwidget ckeditoruploadingwidget 利用包含图像上载和浏览支持的ckeditor。

此版本还包括:

  1. 支持Django存储(与S3一起使用)
  2. 将ckeditor更新到4.9版
  3. 包括所有的ckeditor语言和插件文件,让大家高兴!( 只有ckeditor开发团队维护的插件

安装

必需的

  1. 在python路径中安装或添加django-ckeditor。

    阿尔法。1。阿尔法。
  2. 在安装的

  3. 运行 collectstatic 管理命令: 。这将把静态ckeditor所需的媒体资源复制到集合给定的目录中。有关详细信息,请参见django关于管理静态文件的文档。

  4. ckeditor需要知道其资产的位置,因为它会加载它们 只有在需要的时候才懒洋洋的。位置在 ckeditor-init.js中确定 脚本。默认为 static/ckeditor/ckeditor/ 。这并不都有效 例如,当使用 manifestStaticFilestorage 时,任何资产 包装管道之类的。django-ckeditor非常擅长自动 即使在那时也能检测到正确的位置,但有时你必须硬编码 ckeditor在某个地方有基址路径。这可以在设置中硬编码,即:

    阿尔法。2。阿尔法。 可以覆盖 管理/更改 这个,即:

    阿尔法。3。 当然,在使用 ck管理员应用程序之外的编辑器。

在文件上载时使用小部件所需的

  1. 在安装的

  2. 在项目的 setting s.py/tt>文件中添加一个 ckeditor has been upload certified path 设置。此设置指定指向ckeditor媒体上载目录的相对路径。ckeditor使用django的存储api。默认情况下,django使用文件系统存储后端(它将使用 媒体 媒体nd如果不使用其他后端,则必须对 媒体根目录中的 ckeditor_upload_path 路径具有写权限,即:

    CKEDITOR_UPLOAD_PATH = "uploads/"
    

    使用默认文件系统存储时,图像将上载到 媒体根目录中的"uploads"文件夹,并根据 媒体URL创建URL。 /media/uploads/image.jpg )。

    如果希望能够控制文件名生成,则必须将自定义文件名生成器添加到设置中:

    # utils.py
    
    def get_filename(filename):
        return filename.upper()
    
    # settings.py
    
    CKEDITOR_FILENAME_GENERATOR = 'utils.get_filename'
    

    ckeditor已经用django文件系统存储和s3botostorage进行了测试。 使用django storages中的s3storage时出现问题。

  3. 对于默认的文件系统存储配置, 媒体根目录 媒体url 必须正确设置,媒体文件才能正常工作(就像由ckeditor小部件上载的那些文件一样)。

  4. 将ckeditor url include添加到项目的 url s.py 文件:

    url(r'^ckeditor/', include('ckeditor_uploader.urls')),
    
  5. 请注意,通过添加这些url,您可以添加可以上载和浏览已上载图像的视图。自从django ckeditor 4.4.6以来,这些视图都是使用 @staff\u member\u required 进行修饰的。如果您想要一个不同的权限装饰器( 需要登录名 用户通过测试 等),那么将 ckeditor.url中定义的视图手动添加到您的url.py。

可选-自定义ckeditor编辑器

  1. 向项目的 setting s.py 文件添加ckeditor_configs设置。这将指定传递给ckeditor的ckeditor设置集(请参见ckeditor的 设置配置 ,即:

    CKEDITOR_CONFIGS = {
        'awesome_ckeditor': {
            'toolbar': 'Basic',
        },
    }
    

    当实例化richtextfield时,可以引用设置的名称:

    content = RichTextField(config_name='awesome_ckeditor')
    

    当实例化ckeditorwidget时,可以引用设置的名称:

    pip install django-ckeditor
    
    0

    通过指定一个名为 default 的集合,您将把它的设置应用于所有尚未显式定义 配置名 的richtextfield和ckeditorwidget对象

    pip install django-ckeditor
    
    1

    可以创建自定义工具栏

    pip install django-ckeditor
    
    2

    如果您想要或需要不属于django ckeditor的插件 插件集您可以按如下方式指定资产和插件:

    pip install django-ckeditor
    
    3

文件上传的可选选项
  1. 默认情况下,所有上传的文件都会被删除。要禁用此功能,请将 ckeditor_upload_slugify_filename 设置为 false

  2. 在项目的 setting s.py 文件(默认值 false )中,将 ckeditor_restrict_by懔u user 设置设置设置为 true 。这限制了上传用户对上传图像的访问(例如,每个用户只看到并上传自己的图像)。上传路径的前缀是由 get_username 返回的字符串。如果设置为字符串,则使用命名属性。超级用户仍然可以看到所有图像。 注意 :此限制仅在ckeditor Media Browser中实施。

  3. ckeditor_browse_show_dirs 设置设置为 true 以在"浏览服务器"页上显示目录。这样可以按存储的目录对图像进行分组,并按日期排序。

  4. ckeditor_restrict_by_date设置设置为 true 以按年/月/日压缩上载的文件。

  5. 您可以在设置中的 ckeditor_storage_backend 变量下定义ckeditor uploader的自定义文件存储。

  6. 您可以将 ckeditor_image_backend 设置为支持的后端之一,以在ckeditor gallery中启用缩略图。 默认情况下,不创建缩略图,并使用全尺寸图像作为预览。 支持的后端:

    • 枕头 :使用枕头
  7. 使用 枕头 后端,您可以使用 ckeditor_thumbnail_size 设置(以前的 thumbnail_size 设置)更改缩略图大小。 默认值:(75,75)

  8. 使用 枕头 后端,您可以将上传的图像转换并压缩为JPEG格式,以节省磁盘空间。 将 ckeditor_force_jpeg_compression设置设置为 true (默认值 false ) 您可以更改 ckeditor_image_quality 设置(以前的 image_quality ),该设置传递到枕头:

    < Buff行情>

    图像质量,范围从1(最差)到95(最佳)。默认值为75。值高于95 应避免;100禁用部分JPEG压缩算法,并导致 图像质量几乎没有任何提高的大文件。

    对动画图像禁用此功能。

用法

字段

向模型添加富文本编辑功能的最快方法是使用包含的 rich text field 模型字段类型。ckeditor小部件被呈现为表单字段,但在所有其他方面,该字段的行为都是标准的django textfield 。例如:

pip install django-ckeditor
4

对于文件上载支持,请使用 ckeditor_uploader.fields中的 richtextuploadingfield

小部件

通常,您可以使用包含的 ckeditorwidget 作为表单字段的小部件。例如:

pip install django-ckeditor
5

对于文件上载支持,请使用 ckeditor上载程序中的 ckeditor上载程序.widgets

覆盖小部件模板

在django 1.11和2.x中,覆盖 ckeditor/widget.html 有两种方法:

  1. ckeditor/widget.html 放在 基本目录/模板中

    • form_renderer 更改为 templatesettings
    pip install django-ckeditor
    
    6
    • 在目录中包含 模板 文件夹
    pip install django-ckeditor
    
    7
    • 将"django.forms"添加到已安装的应用程序中
  2. ckeditor/widget.html 放在 您的应用程序/模板中,并将 'ckeditor' 'ckeditor上载程序' 放在 已安装的应用程序中

在django管理之外

当您在管理面板外呈现表单时,必须确保所有表单媒体都存在,以便编辑器工作。实现这一点的一种方法是这样:

pip install django-ckeditor
8

或者您也可以像在演示应用程序中那样手动加载媒体:

pip install django-ckeditor
9

当您需要在模板中安全地呈现richtextfield的html输出时,只需使用django的安全过滤器

管理命令

包含一个管理命令,用于为 ckeditor_upload_path 中已包含的图像创建缩略图。当对现有图像使用django ckeditor时,这对于创建缩略图非常有用。发出如下命令:

CKEDITOR_BASEPATH = "/my_static/ckeditor/ckeditor/"
0

注意 :如果使用自定义视图,请记住通过 {{form.media} 或通过 <;script>; 标记将ckeditor.js包含在表单的媒体中。管理员将自动为您执行此操作。有关详细信息,请参见django的表单媒体文档。

使用s3

参见 https://django storages.readthedocs.org/en/latest/

注意: django ckeditor 在没有这一行设置的情况下,将无法与s3一起通过 django存储进行工作。py :

CKEDITOR_BASEPATH = "/my_static/ckeditor/ckeditor/"
1

如果要使用AllowedContent,请使用

要使允许的内容工作,请禁用样式表分析器插件。 因此,请将其包含在您的设置中。py.:

CKEDITOR_BASEPATH = "/my_static/ckeditor/ckeditor/"
2

插件:

django ckeditor包含以下ckeditor插件,但并非所有插件都默认启用:

CKEDITOR_BASEPATH = "/my_static/ckeditor/ckeditor/"
3

图像/文件上载功能由 upload image 插件完成。

限制文件上传

  1. 若要将上载功能仅限于图像文件,请在settings.py文件中添加 ckeditor_allow_nonimage_files=false 。默认情况下,当前允许使用非图像文件。
  2. 默认情况下,上载和浏览URL使用staff_member_required decorator-ckeditor_uploader/urls.py-如果您希望其他decorator只插入在该url.py中找到的两个URL,而不包括它。

演示/测试应用程序

如果克隆存储库,您将能够运行 ckeditor_demo 应用程序。

  1. pip安装 -r ckeditor_demo_requirements.txt
  2. 运行python manage.py migrate
  3. 如果要在"管理"面板中测试小部件,请创建超级用户
  4. 启动开发服务器。

在主页面(/)上有一个forms.form,在admin中有一个模型,它使用小部件作为模型字段。 数据库设置为sqlite3,静态/media根设置为临时目录中的文件夹。

运行硒测试

您可以使用python manage.py test ckeditor_demo(仅用于repo签出)或配置为使用python 2.7和3.4运行的 tox来运行测试。

运行代码质量测试

创建一个新的virtualenv,安装tox并运行到flake8(pep8和其他质量检查)测试或tox。="pre">py27 isort isort(进口订单检查) 测试

故障排除

如果您的浏览器在图像上载窗口中显示上载的图像时出现问题,您可能需要更改django设置:

CKEDITOR_BASEPATH = "/my_static/ckeditor/ckeditor/"
4

有关 https://docs.djangoproject.com/en/1.11/ref/clickjacking/setting-x-frame-options-for-all-responses的详细信息

CKeditor配置示例

CKEDITOR_BASEPATH = "/my_static/ckeditor/ckeditor/"
5

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
测试偶数/奇数Java的测试   java如何编写在请求体中接受XML的swagger API   java PrimeTable面临奇怪的错误   java如何检查数组中输入的用户是否为回文?   java如何删除JButton中文本周围的框?   java阻止直接访问JSF2中的xhtml文件   java如何获取定义方法的类的名称?   while loop如何让用户只需输入数字,然后在Java中重试?   从应用程序注册中列出azure存储帐户容器时,java受众验证失败   Java线程之间的多线程数据交换   java检查数组中是否存在重复的索引值?   java正则表达式从字符串中复制第二个URL   java如何从gradle项目依赖项中排除METAINF?   java如何将JLabel[]添加到JTable?   使用kotlin播放java音频(位于internet上的文件)