2016-11-11 15 views
0
私は documentation of Django CMSを使用してページの拡張機能を作成し、完璧に動作

こんにちは皆、ページの拡張子

私は私の拡張ページに2 text_areaを持っているが、私は私のtext_areaにTinyMCEのライブラリを含めたい

このため

私は私の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) 
0を持っているでこれを持っています

は、今私が

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ファイルは、私がインターネットで解決策を探して、誰もが私が前にjQueryライブラリをロードすると言うこの構成

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 

を持って、このエラーを取得します...私の場合、TinyMCEの私のフィールドはポップアップの内側にあり、ポップアップにはjqueryライブラリが2回目にロードされています。ブートストラップが最初です。ページの拡張子にTinyMCEのを含める方法

私はポップアップ内の要素を検査すると、私のロード・ライブラリーは、この

<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> 

ているすべてのアイデア、私は正しい道にいますか?

+0

私は、より複雑な答えと答えましたが、ちょうどあなたのコード内の小さなタイプミスを指摘するために - あなたは、このようにforms.ModelFormが見つからない、django.formsではなく、フォームそのものから*インポートされます。 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

のテキストのスペルチェックをします。ありがとうございます。大丈夫です。私は 'url(r '^ tinymce /'、include( 'tinymce.urls')) 、 '私の' urls.py'ファイルにあります。しかし、今私はこの新しいエラー 'jquery.tinymce.min.js:1 Uncaught TypeError:未定義(匿名関数)@ jquery.tinymce.min.jsのプロパティ 'fn'を読み取ることができません:1(匿名関数)@ jquery.tinymce .min.js:1 init_tinymce.js:16キャッチされていないReferenceError:tinyMCEが定義されていません。tinyMCEに設定ファイルを追加するようにリクエストしました。私はGoogleを探して、私が持っているJqueryライブラリの前に読まなければならないと誰もが言った。何か案が! – Stone