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附带一个自定义文件,用作更改管理员显示的基础模板。要使管理员字段显示富文本,请执行以下操作
在您的自定义应用的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)
将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
现在打开新的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没有等效模式),应目前视为实验性。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。