@Mortallylive

Почему TinyMCE при редактировании текста выводит текст с HTML тегами?

При редактировании текста tinymce выводит текст в своем редакторе в таком виде
<p><span style="text-decoration: line-through;">111111111</span></p>

Как решить эту проблему?
Либо, когда я меняю поле на HTMLField
62089b61d3f32281058811.png
62089bc3c7a4a759858528.png

Вот код скрипта, что в HTML шаблоне:
<script>
		tinymce.init({
			selector: '#mytextarea',
			width: 600,
			height: 300,
			plugins: [
			  'advlist autolink link image lists charmap print preview hr anchor pagebreak',
			  'searchreplace wordcount visualblocks code fullscreen insertdatetime media nonbreaking',
			  'table emoticons template paste help'
			],
			toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | ' +
			  'bullist numlist outdent indent | link image | print preview media fullscreen | ' +
			  'forecolor backcolor emoticons | help',
			menu: {
			  favs: {title: 'My Favorites', items: 'code visualaid | searchreplace | emoticons'}
			},
			entity_encoding : "raw",
			menubar: 'favs file edit view insert format tools table help',
			content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:14px }'
		  });
		  
	</script>

Вот код из настроек проекта:
TINYMCE_JS_URL = os.path.join(BASE_DIR, 'notes/js/tinymce/tinymce.min.js')
TINYMCE_SPELLCHECKER = True
TINYMCE_COMPRESSOR = True

TINYMCE_DEFAULT_CONFIG = {
    'theme_advanced_toolbar_location': 'top',
    'theme_advanced_buttons1': 'bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,|,outdent,indent,hr,|,undo,redo',
    'theme_advanced_buttons2': 'cut,copy,paste,pastetext,pasteword,|,search,replace,|,link,unlink,charmap,|,visualaid,table,|,blockquote,sub,sup,|,preview,code,emotions,image',
    'theme_advanced_buttons3': '',
    'theme_advanced_resizing': True,
}
  • Вопрос задан
  • 219 просмотров
Пригласить эксперта
Ответы на вопрос 2
@latush
python manage.py collectstatic ?
Ответ написан
@Mortallylive Автор вопроса
Разобрался, решил залезть в исходники Tinymce в виджеты:
def render(self, name, value, attrs=None, renderer=None):
        if value is None:
            value = ""
        final_attrs = self.build_attrs(self.attrs, attrs)
        final_attrs["name"] = name
        if final_attrs.get("class", None) is None:
            final_attrs["class"] = "tinymce"
        else:
            final_attrs["class"] = " ".join(final_attrs["class"].split(" ") + ["tinymce"])
        assert "id" in final_attrs, "TinyMCE widget attributes must contain 'id'"
        mce_config = self.get_mce_config(final_attrs)
        mce_json = json.dumps(mce_config)
        if tinymce.settings.USE_COMPRESSOR:
            compressor_config = {
                "plugins": mce_config.get("plugins", ""),
                "themes": mce_config.get("theme", "advanced"),
                "languages": mce_config.get("language", ""),
                "diskcache": True,
                "debug": False,
            }
            final_attrs["data-mce-gz-conf"] = json.dumps(compressor_config)
        final_attrs["data-mce-conf"] = mce_json
        html = [f"<textarea{flatatt(final_attrs)}>{escape(value)}</textarea>"]
        return mark_safe("\n".join({escape(value)}))

Возвращало
html = [f"<textarea{flatatt(final_attrs)}>{escape(value)}</textarea>"]
вместо {escape(value)}, по каким неведомым причинам это было сделано, хз.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы