默认情况下,使用flask-ckeditor

时间:2020-06-19 23:03:12

标签: flask ckeditor flask-admin

TL; DR :谁能告诉我如何为flask中的flask-ckeditor字段添加自定义配置(默认情况下启用SCAYT拼写检查器) -admin

首先,我已经在我的Flask-WTF和Flask-Admin表单中使用flask-ckeditor了很长一段时间(大声地向greyli喊以创建它,因为我可以将我需要做的大多数事情都用Python废话,但是我无法用Javascript在啤酒厂中撒尿...或类似的东西)-它很棒,可以满足我的大部分需求...但是因为我输入了很多文本(使用自定义flask-WTF表单) ),并且经常需要对其进行编辑(我使用flask-admin进行了修改),我希望能够将两者的默认设置都设为拼写检查器。

我无法执行(或不知道如何执行)设置了flask-admin页面所需的自定义ckeditor配置(scayt_autoStartup:true)。

可用的配置有限,我可以在config中使用它来设置字段的高度,例如在我的配置文件中:

CKEDITOR_FILE_UPLOADER = 'filething'
CKEDITOR_PKG_TYPE = 'full'
CKEDITOR_HEIGHT = 500

并且这些选项在全局范围内起作用(即:也以flask-admin形式),但是我看不到(我也可以快速浏览源代码)在此处添加自定义配置。

我在模板中使用它来为使用CKEditor的普通站点页面设置它:

{{ ckeditor.config(name='text_stuff', custom_config="scayt_autoStartup: true") }}

,对于普通页面来说效果很好,但是对flask-admin页面没有任何控制。

有没有简单的方法可以做到这一点?我想我一直在盯着这个问题太久了,觉得自己缺少明显的东西。

干杯,史蒂夫


编辑:
在我所做的阅读中,我发现:https://github.com/flask-admin/flask-admin/issues/1328向我指出了“解决方案”的总体方向。
感觉很脏,但是通过在flask-admin中使用extra_js可以解决问题。我将此以下文件添加到/templates/admin/master.html

{% extends 'admin/base.html' %}
{% block tail_js %}
  {{ super() }}
  {% if admin_view.extra_js %}
    {% for js in admin_view.extra_js %}
      {{js|safe}} {# 'safe' LOL #}
    {% endfor %}
  {% endif %}
{% endblock %}

,然后将其添加到由于其他原因而在我的 init 文件中已经存在的现有替代项中:

class MyModelView(ModelView):
    extra_js = ['<script src="//cdn.ckeditor.com/4.9.2/full/ckeditor.js">','CKEDITOR.config.scayt_autoStartup = true</script>']

这看起来很可怕,但是有效。我必须强制ckeditor加载到此处(作为实际实现的一部分,稍后在您查看页面源代码时再加载几行),否则extra_js插入得太早了,因此配置更改中断了,因为尚未加载编辑器。

所以,一个解决方案:是的……正确的做法:不(可能)……未知的未知数?大概几个。

我仍然会喜欢一种更好的方法,但是如果什么都没有发生,那么我将其称为“固定的”(嗯,固定的程度足以满足我的需求,而且我还没有看过任何专业缺点),然后继续:)

0 个答案:

没有答案