在Django Admin中添加Aloha Editor,jQuery兼容性问题随之而来



我正在Django中写一个个人博客,并希望将Aloha Editor包含在管理面板中。我一直在遵循指示,但没有成功。然后我尝试了其他事情,包括在我的/static/admin/js中放入一个新版本的jQuery(而不是Django的1.4.2),这只会破坏一些东西。jQuery似乎在需要的时候(在document.ready)不可用,但在以后的任何时候,从控制台启用Aloha都可以。。。通过django.jQuery.

>>> django.jQuery('.vLargeTextField').aloha() //works
>>> $('.vLargeTextField').aloha() // does not work; jQuery 1.7.2 loaded by Aloha

我的模板/admin/base_site.html相关块):

{% block extrastyle %}
<link href="/static/admin/local-lib/alohaeditor-0.21.3/aloha/css/aloha.css" rel="stylesheet" type="text/css" />
{% endblock %}
{% block extrahead %}
<script type="text/javascript" src="http://requirejs.org/docs/release/2.0.6/minified    /require.js"></script>
<script src="/static/admin/local-lib/alohaeditor-0.21.3/aloha/lib/aloha.js"
data-aloha-plugins="common/ui,
        common/format,
        common/list,
        common/link,
        common/highlighteditables">
</script>
<script type="text/javascript">
Aloha.ready( function() {
  Aloha.jQuery('.vLargeTextArea').aloha();
});
</script>
{% endblock %}

*Breakage包括:表格内联现在是不稳定的,可折叠的字段集现在有一点不同于jQuery 1.4.2的行为。

编辑

似乎将Aloha插入管理面板的唯一真正方法是将最后一个脚本放在blockbots(!!)块中,该块是在标准Django管理包含下呈现的。此外,必须使用Aloha提供的jQuery来处理Aloha,因为我在/static/admin中放入的1.8将不起作用。对于Django的管理员,我恢复到提供的1.4.2版本。然而,新的问题出现了:Aloha的工具提示在页面底部堆积起来,并没有消失。此外,控制台中错误百出。有什么办法我能解决这个问题吗?

您可以尝试为aloha使用预先构建的django集成包:https://pypi.python.org/pypi/django-aloha-edit,

然后使用HTMLField,或者简单地使用AlohaWidget并指定后端。HTMLField具有重要的卫生功能,但如果您只是从后台与受信任的用户一起编辑,则没有必要这样做,您可以覆盖后台的小部件。

formfield_overrides = {
    models.TextField: {'widget': AlohaWidget(attrs={'style':'width:100%;max-width:800px;height:80ex;'})},
}

这样做的好处是,所需的js资源会自动包含在内,包括仅针对Aloha的jQuery版本。(这两个版本可以独立操作。)

最新更新