Редактор Django/TinyMCE не работает

Я использую Django 1.8 с Python2.7. Я установил TinyMCE с помощью команды «pip install django-tinymce» и включил приложение «tinymcy» в INSTALLED_APPS.

INSTALLED_APPS = (
    ...
    'tinymce',
    ...
)

Включено в URL-адрес проекта: urls.py

url(r'^tinymce/', include('tinymce.urls')),

Конфигурация TinyMCE в файле Settings.py

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()

Добавлена ​​ссылка tinymce js в файл base.html

<script src="{% static 'django-tinymce-master/tinymce/media/tiny_mce/tiny_mce.js' %}"></script>

Tinimce добавлен в мой add_post.html

{{ form1.media }}

Сгенерированный HTML текстового поля

<textarea class="tinymce" cols="50" data-mce-conf="{&quot;cleanup_on_startup&quot;: true, &quot;spellchecker_languages&quot;: &quot;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&quot;, &quot;elements&quot;: &quot;id_body&quot;, &quot;language&quot;: &quot;en&quot;, &quot;spellchecker_rpc_url&quot;: &quot;/tinymce/spellchecker/&quot;, &quot;directionality&quot;: &quot;ltr&quot;, &quot;theme&quot;: &quot;advanced&quot;, &quot;strict_loading_mode&quot;: 1, &quot;mode&quot;: &quot;exact&quot;, &quot;custom_undo_redo_levels&quot;: 10, &quot;plugins&quot;: &quot;table,spellchecker,paste,searchreplace&quot;}" data-mce-gz-conf="{&quot;themes&quot;: &quot;advanced&quot;, &quot;languages&quot;: &quot;en&quot;, &quot;debug&quot;: false, &quot;diskcache&quot;: true, &quot;plugins&quot;: &quot;table,spellchecker,paste,searchreplace&quot;}" id="id_body" name="body" rows="30"></textarea>

TinyMCE пока не работает! Где я делаю ошибку


person Muhammad Ahmed    schedule 12.03.2016    source источник
comment
data-mce-conf="{&quot;... - вместо &quot; должна быть реальная кавычка '.   -  person xyres    schedule 12.03.2016
comment
@xyres Я вставил его из браузера (проверить объект). Означает ли это, что проблема заключается в бэкэнде TinyMCE? Я также проверил замену на ' на html-странице, но не ответил в нужном формате.   -  person Muhammad Ahmed    schedule 12.03.2016
comment
Загружает ли ваш HTML-код TinyMCE JavaScript (есть ли ссылка на него в разделе заголовка вашей HTML-страницы)?   -  person wobbily_col    schedule 13.03.2016
comment
Да, это так. Я добавил: ‹script src={% static 'django-tinymce-master/tinymce/media/tiny_mce/tiny_mce.js' %}›‹/script›   -  person Muhammad Ahmed    schedule 13.03.2016
comment
попробуйте использовать from tinymce.models import HTMLField и body = forms.HTMLField(widget=TinyMCE(attrs={'cols': 50, 'rows': 30})) - это также будет обрабатывать виджет администратора Django   -  person lukeaus    schedule 14.03.2016


Ответы (2)


попробуйте это, чтобы инициализировать поля tinyMCE на странице add_post.html.

<script>
tinyMCE.init({
  mode: "textareas",  // to do all text areas
  // or
  selector: "#id_myfield",  // change this value according to your HTML
});
</script>
person lukeaus    schedule 14.03.2016
comment
Он уже создает файл JS, а именно init_tinymce.js, который имеет этот код ([hastebin.com/uyupeyacax.lisp). - person Muhammad Ahmed; 14.03.2016
comment
@MuhammadAhmed вызывается ли этот файл init__tinymce.js? - person lukeaus; 14.03.2016
comment
Да! Я скопировал файл из окна браузера. - person Muhammad Ahmed; 14.03.2016
comment
вы установили TINYMCE_JS_URL и TINYMCE_JS_ROOT - что это такое? - person lukeaus; 14.03.2016
comment
Я установил URL-адрес для файлов JS. Согласно документации, найденной здесь [readthedocs.org/projects/django-tinymce /downloads/pdf/tinymce4/. Однако документ установил папку TinyMCE как Media, и для этой цели я использовал статическую папку. - person Muhammad Ahmed; 14.03.2016
comment
О, я увидел это сейчас. Консоль показывает 404. вставлено сюда[hastebin.com/atevineqix.coffee]. Что мне теперь делать? - person Muhammad Ahmed; 14.03.2016
comment
Спасибо @luke_aus! Я использовал ваш скрипт в add_post.html, и теперь он работает. - person Muhammad Ahmed; 14.03.2016

Я знаю, что вы решили свою проблему, но, поскольку я искал ответ, чтобы решить мою проблему с отображением желаемого материала во внешнем интерфейсе, я отвечаю вам:

вам просто нужно отфильтровать во внешнем интерфейсе, поэтому добавьте в файл шаблона следующее:

{{ your_view_context.your_model_field | safe }}
person bghad1    schedule 23.09.2020