2016-11-11 29 views
0

大家好我創建一個使用documentation of Django CMS頁面擴展和完美,頁擴展與TinyMCE的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的頁面擴展,我的方法不對?

+0

我回答更復雜的答案,但只是在代碼中指出一個小錯字 - 要導入從django.forms而不是形式本身*,從而forms.ModelForm找不到。僅使用ModelForm就足夠了。 – petr

回答

1

除非有特定的要求使用TinyMCE,否則我會推薦使用已經內置到Django CMS文本模塊(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'], 
    ] 
} 
+0

謝謝@petr我必須使用TinyMCE,我在我的admin.py中做了一些更改,現在當我打開我的頁面擴展時,出現了這個新錯誤。 ''tinymce-spellcheck'參數'()'和關鍵字參數'{}'未找到。嘗試了0個模式:[]有關於此的任何想法? – Stone

+1

看起來它缺少帶有別名「tinymce-spellcheck」的URL。也許你錯過了一些內部URL設置?編輯器可能會通過AJAX調用你的網站對文本進行拼寫檢查 – petr

+0

嗨@petr,非常感謝你,我忘了把'url(r'^ tinymce /',include('tinymce.urls')) ,在我的'urls.py'文件中。但現在我有這個新的錯誤'jquery.tinymce.min.js:1 Uncaught TypeError:無法讀取未定義(匿名函數)的屬性'fn'@ jquery.tinymce.min.js:1(匿名函數)@ jquery.tinymce .min.js:1 init_tinymce.js:16 Uncaught ReferenceError:tinyMCE未定義我更改我的請求以將我的設置文件添加到tinyMCE。我尋找谷歌,每個人都說我必須在我有Jquery庫之前閱讀。任何想法! – Stone