31
There’s an add-on Django application to provide TinyMCE support for Django admin forms without having to muck around with admin templates or Django newform internals.
14
Take a look on this snippet – basic idea is to include custom JS in your admin definitions which will replace standard text areas with rich-text editor.
For jQuery/FCKEditor such JS could look like that:
$(document).ready(function() {
$("textarea").each(function(n, obj) {
fck = new FCKeditor(obj.id) ;
fck.BasePath = "/admin-media/fckeditor/" ;
fck.ReplaceTextarea() ;
});
});
- [Django]-Django 'Sites' Model – what is and why is 'SITE_ID = 1'?
- [Django]-How do I access the request object or any other variable in a form's clean() method?
- [Django]-What's the purpose of Django setting ‘SECRET_KEY’?
12
I’d say: define your own ModelAdmin class and overwrite the widget used for particular field, like:
class ArticleAdminModelForm(forms.ModelForm):
description = forms.CharField(widget=widgets.AdminWYMEditor)
class Meta:
model = models.Article
(AdminWYMEditor is a forms.Textarea
subclass that adds WYMEditor with configuration specific to Django admin app).
See this blog post by Jannis Leidel to see how this widget can be implemented.
- [Django]-How to force a user logout in Django?
- [Django]-Django Sitemaps and "normal" views
- [Django]-Django can't find new sqlite version? (SQLite 3.8.3 or later is required (found 3.7.17))
8
At the date of the post and the answers TinyMCE was quite popular (as it probably remains today).
But after some time ckeditor has appeared and many consider that a better alternative, including many SO users:
Compare TinyMCE and CKeditor for a Wiki
http://www.turnkeylinux.org/blog/tinymce-vs-ckeditor
There is also a 2013 review of WISIWYG editors with Django in Russian:
- [Django]-Uninstall Django completely
- [Django]-What is a django.utils.functional.__proxy__ object and what it helps with?
- [Django]-Is it secure to store passwords as environment variables (rather than as plain text) in config files?
2
Currently the most straight forward way to use tinymce in django admin is to use Grappelli.
http://code.google.com/p/django-grappelli/
Grappelli is also a requirement for django-filebrowser so if you want the whole shebang you will gotta need it anyways.
- [Django]-How can I filter a Django query with a list of values?
- [Django]-Switching from MySQL to Cassandra – Pros/Cons?
- [Django]-Django URL Redirect
2
Ok, to update a little this post, I would say that the easiest way to implement TinyMCE is to use the django-tinymce app. You must also download the JS files from the TinyMCE page. I got some errors with the django intenationalization, but downloading the laguage packs from the TinyMCE must be enough.
- [Django]-Auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'UserManage.groups'
- [Django]-Adding REST to Django
- [Django]-Get user profile in django
2
class KindEditor(forms.Textarea):
class Media:
css ={
'all':(settings.STATIC_ROOT + 'editor/themes/default/default.css',)
}
js = (settings.STATIC_ROOT + 'editor/kindeditor-min.js',settings.STATIC_ROOT + 'editor/lang/zh_CN.js',)
def __init__(self):
attrs = {}
attrs['rel'] = 'kind'
super(KindEditor, self).__init__(attrs)
class NewsAdminForm(forms.ModelForm):
pass
class Meta:
model = News
widgets = {
'body':KindEditor()
}
class NewsAdmin(admin.ModelAdmin):
form = NewsAdminForm
admin.site.register(News, NewsAdmin)
- [Django]-Django Rest Framework writable nested serializers
- [Django]-Logging in Django and gunicorn
- [Django]-How to debug in Django, the good way?
2
Install this package
pip install django-ckeditor
then run these commands to migrate.
python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic
finally restart your Django server.
Once you complete the above steps, you can see the rich text editor in your admin panel fields.
- [Django]-Django: "projects" vs "apps"
- [Django]-ChoiceField in Django model
- [Django]-What's the difference between CharField and TextField in Django?