页面扩展名为tinyMCE django-cms

时间:2016-11-11 14:51:28

标签: django tinymce django-cms

大家好,我使用documentation of Django CMS创建了一个页面扩展,并且工作正常,

现在我的扩展页面中有两个text_area,我希望将TinyMCE库包含在我的text_area中

为此我在models.py

中有这个
from django.db import models
from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool


class IconExtension(PageExtension):

  image = models.ImageField(upload_to='icons', blank=True)
  description_short = models.TextField(blank=True, null=True, verbose_name="Short Description")
  description_large = models.TextField(blank=True, null=True, verbose_name="Large Description")

extension_pool.register(IconExtension)

我的admin.py有这个

# from django.forms import *
from django.forms import ModelForm 
from django import forms
from django.db.models import *
from django.contrib import admin
from cms.extensions import PageExtensionAdmin
from tinymce.widgets import TinyMCE


from .models import IconExtension

class IconExtensionForm(forms.ModelForm):
  some_field = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))

  class Meta:
    model = IconExtension
    fields = '__all__'


class IconExtensionAdmin(PageExtensionAdmin):
  form = IconExtensionForm

admin.site.register(IconExtension, IconExtensionAdmin)

现在我收到此错误

jquery.tinymce.min.js:1 Uncaught TypeError: Cannot read property 'fn' of undefined(anonymous function) @ jquery.tinymce.min.js:1(anonymous function) @ jquery.tinymce.min.js:1
init_tinymce.js:16 Uncaught ReferenceError: tinyMCE is not defined

我的setting.py文件具有此配置

TINYMCE_JS_URL = os.path.join(STATIC_URL, "tinymce/jquery.tinymce.min.js")
TINYMCE_JS_ROOT = '/static/js/tinymce/'
TINYMCE_DEFAULT_CONFIG = {
    'plugins': "table,spellchecker,paste,searchreplace",
    'theme': "advanced",
}
TINYMCE_SPELLCHECKER = True 

我在互联网上寻找解决方案,每个人都说我之前加载了jquery库...在我的情况下,我的TinyMCE字段在弹出窗口内,页面加载弹出窗口第二次有jquery库.. bootstrap是第一个。

当我检查弹出窗口中的元素时,我的加载库就是这个

<head>
<title>
Change icon extension | Django site admin</title>
<link rel="stylesheet" type="text/css" href="/static/admin/css/base.css">
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css">
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="/static/admin/css/ie.css" /><![endif]-->

<script type="text/javascript">window.__admin_media_prefix__ = "/static/admin/";</script>
<script type="text/javascript">window.__admin_utc_offset__ = "\u002D18000";</script>

<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" type="text/css" href="/static/djangocms_admin_style/css/djangocms-admin.css">

    <script src="/static/djangocms_admin_style/js/dist/bundle.adminstyle.min.js"></script>


    <script type="text/javascript" src="/en/admin/jsi18n/"></script>
    <script type="text/javascript" src="/static/admin/js/core.js"></script>
    <script type="text/javascript" src="/static/admin/js/jquery.js"></script>
    <script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
    <script type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js"></script>
    <script type="text/javascript" src="/static/admin/js/actions.js"></script>
    <script type="text/javascript" src="/static/tinymce/jquery.tinymce.min.js"></script>
    <script type="text/javascript" src="/static/django_tinymce/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="/static/django_tinymce/init_tinymce.js"></script>

    <meta name="robots" content="NONE,NOARCHIVE">
    </head>

任何想法如何在页面扩展中包含tinyMCE,我是以正确的方式?

1 个答案:

答案 0 :(得分:1)

除非有特殊要求使用TinyMCE,否则我建议使用已经内置在Django CMS Text模块(CKEditor)中的集成。

# models.py 

class Model1(models.Model):
    text = HTMLField(configuration='CKEDITOR_SETTINGS_MODEL1')

class Model2(models.Model):
    text = HTMLField(configuration='CKEDITOR_SETTINGS_MODEL2')

# settings.py

CKEDITOR_SETTINGS_MODEL1 = {
    'toolbar_HTMLField': [
        ['Undo', 'Redo'],
        ['ShowBlocks'],
        ['Format', 'Styles'],
        ['Bold', 'Italic', 'Underline', '-', 'Subscript', 'Superscript', '-', 'RemoveFormat'],
    ]
}

CKEDITOR_SETTINGS_MODEL2 = {
    'toolbar_HTMLField': [
        ['Undo', 'Redo'],
        ['Bold', 'Italic', 'Underline', '-', 'Subscript', 'Superscript', '-', 'RemoveFormat'],
    ]
}