django-wysiwyg-redactor is a reusable application for Django, using Redactor WYSIWYG editor
Sponsored by Mess Marketing, we use the latest version of redactorjs, always up-to-date.
- Django >= 1.3 # for static files
- Pillow or PIL # for image upload
- Install django-wysiwyg-redactor:
`pip install django-wysiwyg-redactor`
- Add 'redactor' to INSTALLED_APPS.
- Add url(r'^redactor/', include('redactor.urls')), to urls.py
- Add default config in settings.py
REDACTOR_OPTIONS = {'lang': 'en'}
REDACTOR_UPLOAD = 'uploads/'
More redactor settings.
from django.db import models
from redactor.fields import RedactorField
class Entry(models.Model):
title = models.CharField(max_length=250, verbose_name=u'Title')
short_text = RedactorField(verbose_name=u'Text')
or use custom parametrs:
short_text = RedactorField(
verbose_name=u'Text',
redactor_options={'lang': 'en', 'focus': 'true'},
upload_to='tmp/',
allow_file_upload=True,
allow_image_upload=True
)
from django import forms
from redactor.widgets import RedactorEditor
from blog.models import Entry
class EntryAdminForm(forms.ModelForm):
class Meta:
model = Entry
widgets = {
'short_text': RedactorEditor(),
}
class EntryAdmin(admin.ModelAdmin):
form = EntryAdminForm
RedactorEditor takes the same parameters as RedactorField.
Download the plugin you want or create a custom plugin.
Then:
from django.db import models
from redactor.fields import RedactorField
class Entry(models.Model):
title = models.CharField(max_length=250, verbose_name=u'Title')
short_text = RedactorField(
verbose_name=u'Text',
# for example, if you downloaded the 'table' plugin:
redactor_options={'plugins': ['table']}
)
OR (on settings.py):
REDACTOR_OPTIONS = {'lang': 'en', 'plugins': ['table']}
Important: if you set a plugin called "table", you must create/paste the "table.js" on YOUR_STATIC_FILES_FOLDER/redactor/plugins/table.js
SimpleUploader - The Standard Uploader. Will upload your file to REDACTOR_UPLOAD.
UUIDUploader - This handler will replace the original file name for an UUID.
DateDirectoryUploader - This handler saves the file in a directory based on the current server date.
Usage:
For example, if I want to use the DateDirectoryUploader handler, I will put this on settings.py:
REDACTOR_UPLOAD_HANDLER = 'redactor.handlers.DateDirectoryUploader'
django-wysiwyg-redactor defaults to using the default media storage for your Django application.
This can be overriden to use a different storage backend with this settings.py variable:
REDACTOR_FILE_STORAGE = 'my_site.file_storages.storage_instance'
Information on writing a custom storage backend is here in the Django documentation.
Other third-party libraries exist to provide storage backends for cloud object storages (e.g. django-cumulus for Rackspace/OpenStack or django-storages for Amazon S3).
NOTE: Soon we will have a better documentation.
- Fork it!
- Create your feature branch: git checkout -b my-new-feature
- Commit your changes: git commit -am 'Add some feature'
- Push to the branch: git push origin my-new-feature
- Submit a pull request =]
Awesome people, you should see the AUTHORS file.
And our awesome sponsor:
Mess Marketing from Chicago, IL jshedd@thisismess.com thisismess.com @etchalon