This package helps integrate the Redactor Javascript WYSIWYG-editor in Django.
- Add the
redactor
directory to your Python path. - Add the
redactor
application to your INSTALLED_APPS setting.
The redactor app provides a Django widget called RedactorEditor
. It is a drop-in replacement for any TextArea
widget. Example usage:
from django import forms from django.db import models from redactor.widgets import RedactorEditor class MyForm(forms.Form): about_me = forms.CharField(widget=RedactorEditor())
You can also customize any of the Redactor editor's settings when instantiating the widget:
class MyForm(forms.Form): about_me = forms.CharField(widget=RedactorEditor(redactor_settings={ 'autoformat': True, 'overlay': False }))
Django-redactor also includes a widget with some some customizations that make it function and look better in the Django admin:
class MyAdmin(admin.ModelAdmin): formfield_overrides = { models.TextField: {'widget': AdminRedactorEditor}, }
Finally, you can connect a custom CSS file to the editable area of the editor:
class MyForm(forms.Form): about_me = forms.CharField(widget=RedactorEditor( redactor_css="styles/text.css") )
Paths used to specify CSS can be either relative or absolute. If a path starts with '/', 'http://' or 'https://', it will be interpreted as an absolute path, and left as-is. All other paths will be prepended with the value of the STATIC_URL
setting (or MEDIA_URL
if static is not defined).
For the sake of convenience, there is also a form field that can be used that accepts the same inputs. This field can be used anywhere forms.CharField
can and accepts the same arguments, but always renders a Redactor widget:
from redactor.fields import RedactorField class MyForm(forms.Form): about_me = RedactorField( in_admin=True, redactor_css="styles/text.css", redactor_settings={'overlay': True} )
If you are using a redactor widget outside the admin, you'll need to be sure that you render the form's media. Redactor widgets need to include some CSS and JavaScript to work properly:
<form> {{ myform.media }} {{ myform.as_p }} <input type="submit"/> </form>
If you wish to use Redactor in other languages, you only need to specify the lang
setting. The correct javascript language files will be loaded automatically:
class MyForm(forms.Form): about_me = forms.CharField(widget=RedactorEditor(redactor_settings={ 'autoformat': True, 'lang': 'es', 'overlay': False }))
Note
This is a change from version 1.2.1, where the javascript language files needed to be specified by the user.
Django-Redactor is licensed under a Creative Commons Attribution-NonCommercial 3.0 license. However, the noncommercial restrictions of the license (e.g., Section 4(b)) are waived for any user who purchases a legitimate commercial license to the redactor.js library. Open source users are still under the noncommercial clause, but legitimate Imperavi license holders are not.