This package helps integrate the Redactor Javascript WYSIWYG-editor in Django.
- Add the
redactordirectory to your Python path. - Add the
redactorapplication 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.