I am using Django 1.8 with Python2.7. I have Installed TinyMCE using command "pip install django-tinymce" and included 'tinymcy' app in INSTALLED_APPS.
INSTALLED_APPS = (
...
'tinymce',
...
)
Included in Project URL: urls.py
url(r'^tinymce/', include('tinymce.urls')),
TinyMCE Configuration in Settings.py File
TINYMCE_JS_URL = os.path.join(STATIC_PATH,"django-tinymce-master/tinymce/media/tiny_mce/tiny_mce_src.js")
TINYMCE_JS_ROOT = os.path.join(STATIC_PATH, "django-tinymce-master/tinymce")
#D:\Dropbox\dp\p2d18\opinion\static\django-tinymce-master\tinymce
TINYMCE_DEFAULT_CONFIG = {
'plugins': "table,spellchecker,paste,searchreplace",
'theme': "advanced",
'cleanup_on_startup': True,
'custom_undo_redo_levels': 10,
}
TINYMCE_SPELLCHECKER = True
TINYMCE_COMPRESSOR = True
models.py
class Post(models.Model):
...
body = models.TextField()
...
forms.py
from django import forms
from django.contrib.auth.models import User
from blog.models import Post, Comment, Tag
from tinymce.widgets import TinyMCE
class PostForm(forms.ModelForm):
---
body = forms.CharField(widget=TinyMCE(attrs={'cols': 50, 'rows': 30}))
---
views.py
def add_post(request):
if request.method == 'POST':
form1Post = PostForm(request.POST)
form2Tags = TagForm(request.POST)
if form1Post.is_valid() and form2Tags.is_valid():
post = form1Post.save()
tag_title_from_form = form2Tags['tag_title'].value().strip().lower()
tag_title_from_form = tag_title_from_form.rstrip(',')
striped_tags = tag_title_from_form.split(',')
for t in striped_tags:
received_tag = t.strip()
tag, created = Tag.objects.get_or_create(tag_title=received_tag)
post.tag_set.add(tag)
return index(request)
else:
print (form1Post.errors)
print (form2Tags.errors)
else:
form1Post = PostForm()
form2Tags = TagForm()
Added tinymce js link in my base.html
<script src="{% static 'django-tinymce-master/tinymce/media/tiny_mce/tiny_mce.js' %}"></script>
Added tinymce in my add_post.html
{{ form1.media }}
Generated HTML of Textarea
<textarea class="tinymce" cols="50" data-mce-conf="{"cleanup_on_startup": true, "spellchecker_languages": "Afrikaans=af,Arabic=ar,Asturian=as,Azerbaijani=az,Bulgarian=bg,Belarusian=be,Bengali=bn,Breton=br,Bosnian=bs,Catalan=ca,Czech=cs,Welsh=cy,Danish=da,German=de,Greek=el,+English / Australian English / British, English=en,Esperanto=eo,Spanish / Argentinian Spanish / Mexican Spanish / Nicaraguan Spanish / Venezuelan, Spanish=es,Estonian=et,Basque=eu,Persian=fa,Finnish=fi,French=fr,Frisian=fy,Irish=ga,Galician=gl,Hebrew=he,Hindi=hi,Croatian=hr,Hungarian=hu,Interlingua=ia,Indonesian=id,Ido=io,Icelandic=is,Italian=it,Japanese=ja,Georgian=ka,Kazakh=kk,Khmer=km,Kannada=kn,Korean=ko,Luxembourgish=lb,Lithuanian=lt,Latvian=lv,Macedonian=mk,Malayalam=ml,Mongolian=mn,Marathi=mr,Burmese=my,Norwegian Bokmal=nb,Nepali=ne,Dutch=nl,Norwegian, Nynorsk=nn,Ossetic=os,Punjabi=pa,Polish=pl,Portuguese / Brazilian Portuguese=pt,Romanian=ro,Russian=ru,Slovak=sk,Slovenian=sl,Albanian=sq,Serbian / Serbian Latin=sr,Swedish=sv,Swahili=sw,Tamil=ta,Telugu=te,Thai=th,Turkish=tr,Tatar=tt,Udmurt=ud,Ukrainian=uk,Urdu=ur,Vietn amese=vi,Simplified Chinese / Simplified Chinese / Traditional Chinese / Traditional Chinese=zh", "elements": "id_body", "language": "en", "spellchecker_rpc_url": "/tinymce/spellchecker/", "directionality": "ltr", "theme": "advanced", "strict_loading_mode": 1, "mode": "exact", "custom_undo_redo_levels": 10, "plugins": "table,spellchecker,paste,searchreplace"}" data-mce-gz-conf="{"themes": "advanced", "languages": "en", "debug": false, "diskcache": true, "plugins": "table,spellchecker,paste,searchreplace"}" id="id_body" name="body" rows="30"></textarea>
TinyMCE is not yet working! Where I am making Mistake
try this to initialize the tinyMCE fields on your add_post.html page
<script>
tinyMCE.init({
mode: "textareas", // to do all text areas
// or
selector: "#id_myfield", // change this value according to your HTML
});
</script>