跳转到主要内容

django-wysiwyg

项目描述

一个Django应用,可以轻松地将HTML <textarea> 转换为符合美国政府508/WAC标准的富HTML编辑器。该应用已证明可以与django-crispy-forms(https://github.com/maraujop/django-crispy-forms)很好地协同工作。

目前这作为一个模板标签工作。我们这样做的理由是,如何编辑的控制从理论上讲是模板问题(即表现)而不是表单/模型问题(即控制)。

由于熟悉性、可访问性以及可以完全通过Yahoo的CDN运行的事实,YUI是默认编辑器。可以使用CKEditor,但需要在STATIC_URL/ckeditor中安装CKEditor文件(见下文)。

如果您想为django-wysiwyg做出贡献,请从http://github.com/pydanny/django-wysiwyg的仓库中进行。

注意:这仅在<textarea>(模型TextField)上有效,而不是简单的字符(<input>)字段。

安装

通过pip

pip install django-wysiwyg

配置

在settings.py中将‘django_wysiwyg’添加到您的INSTALLED_APPS

INSTALLED_APPS = (
    ...
    'django_wysiwyg',
)

使用CKEditor

如果您想使用CKEditor,请在settings.py中设置flavor

DJANGO_WYSIWYG_FLAVOR = "ckeditor"

请注意,这样做需要您确保CKEditor发行版可用。您可以选择以下任一方式:

  • 将ckeditor发行版放在STATIC_URL/ckeditor

  • 安装django-ckeditor并将其包含在INSTALLED_APPS中

  • 在settings.py中将DJANGO_WYSIWYG_MEDIA_URL设置为包含ckeditor发行版的适当位置。

使用TinyMCE

要使用TinyMCE,请使用以下设置

DJANGO_WYSIWYG_FLAVOR = "tinymce"    # or "tinymce_advanced"

需要TinyMCE发行版。您可以选择以下任一方式:

  • 将它们放在STATIC_URL/tinymce下

  • 安装django-tinymce并将其包含在INSTALLED_APPS中

  • 将DJANGO_WYSIWYG_MEDIA_URL设置为适当的路径。

其他编辑器

以下值是DJANGO_WYSIWYG_FLAVOR设置允许的

  • ckeditor - CKEditor,之前称为FCKEditor。

  • redactor - Redactor编辑器(需要许可证)。

  • froala - Froala编辑器(需要许可证)。

  • tinymce - TinyMCE编辑器,简单模式。

  • tinymce_advanced - 带有更多工具栏按钮的TinyMCE编辑器。

  • yui - YAHOO编辑器(默认)>

  • yui_advanced - 带有更多工具栏按钮的YAHOO编辑器。

  • alloyeditor - AlloyEditor,一个基于CKEditor的现代编辑器。

可以通过提供所需的模板来支持其他编辑器;请参阅http://django-wysiwyg.readthedocs.org/en/latest/extending.html

用法

在您的页面中

有两个模板标签:wysiwyg_setup必须在每页调用一次,最好在中,以加载JavaScript依赖项。wysiwyg_editor应在文本区域创建后调用一次。一个简单的例子

{% load wysiwyg %}
{% wysiwyg_setup %}

<textarea id="foo"></textarea>

{% wysiwyg_editor "foo" %}

在Django管理中

django-wysiwyg附带一个自定义文件,用作更改管理员显示的基础模板。要使管理员字段显示富文本,请执行以下操作

  1. 在您的自定义应用的admin.py文件中,在MyModelAdmin类中,添加change_form_template = 'my-app-name/admin/change_form.html'。例如

    from django.contrib import admin
    from fun.models import Playground
    
    class PlaygroundAdmin(admin.ModelAdmin):
        change_form_template = 'fun/admin/change_form.html'
    
    admin.site.register(Playground, PlaygroundAdmin)
  2. django_wysiwyg/templates/my-app-name/admin/change_form.html复制到my_app/templates/<my-app-name>/admin/change_form.html。例如

    cp django_wysiwyg/templates/my-app-name/admin/change_form.html pydanny/templates/fun/admin/change_form.html
  3. 现在打开新的pydanny/templates/my-app-name/admin/change_form.html文件。您需要设置要将哪些字段转换为富文本编辑器,通过添加{% wysiwyg_editor “id_description” %}模板标签调用来实现,将“id_description”替换为您表单HTML字段的名称。例如

    {% extends "admin/change_form.html" %}
    
    {% load wysiwyg %}
    
    {% block extrahead %}
        {{ block.super }}
        {% wysiwyg_setup %}
    {% endblock %}
    
    {% block content %}
        {{ block.super }}
        {% wysiwyg_editor "id_description" %}
    {% endblock %}

处理内容

清理HTML

如果已安装html5lib (http://code.google.com/p/html5lib/) 或 pytidylib,则将导出django_wysiwyg.clean_html。这两个都应该通过pip或easy_install安装,尽管后者需要安装htmltidy C库。

在视图中使用clean_html很简单

data = django_wysiwyg.clean_html(data)

显示原始HTML

在您的模板中

{% autoescape off %}
    {{ content }}
{% endautoescape %}

{{ content|safe }}

如果您的内容来自不可信的用户,则不应不加考虑地使用此功能

clean_html无法防止安全问题;sanitize_html试图这样做,但仅适用于html5lib(tidylib没有等效模式),应目前视为实验性。

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

django-wysiwyg-0.8.0.tar.gz (12.1 kB 查看哈希值)

上传时间

构建分发

django_wysiwyg-0.8.0-py3-none-any.whl (23.0 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面