1

私は Django 1.5.1 を使用しています。ご存知のように、Django 1.3 以降、メディアと統計ファイルの世界は正当な理由で分離されています。

驚いたことに、django-tinymce のドキュメントでは、TINYMCE_JS_URL がデフォルトでメディア URL を指している方法について言及しています。

TINYMCE_JS_URL (default: settings.MEDIA_URL + 'js/tiny_mce/tiny_mce.js')

それはあまり意味がありません。Django 1.3 以降と同様に、自己ホスト型の js および css ファイル用の static_url があります。しかし、それを変更しようとすると混乱し、うまくいきません。

これは、通常、静的ファイルの設定をセットアップする方法です。

STATIC_ROOT = '/home/kave/project-env/site/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = ('/home/kave/project-env/site/static_files/',)

static_files ディレクトリで、TINYMCE zipfile を抽出しました。たとえば、パスは次のようになります。

/home/kave/project-env/site/static_files/tinymce/js/tinymce/tinymce.min.js

次に、次のように設定しました。

TINYMCE_JS_URL = STATIC_URL + 'tinymce/js/tinymce/tinymce.min.js'
TINYMCE_JS_ROOT = STATIC_ROOT + 'tinymce/js/tinymce'

ただし、アプリを実行すると、TINYMCE ではなくプレーン テキスト フィールドが表示されます。

私は何を見落としていたでしょうか?

4

2 に答える 2

4

私はついにそれを理解しました、それが他の誰かに役立つことを願っています。

pip を介して自動的にインストールされる組み込みの tiny_mce を指す必要があります。何もダウンロードする必要はありません。

<script type="text/javascript" src="{{ STATIC_URL }}tiny_mce/tiny_mce.js"></script>

管理画面の場合、これがあることを確認してください:

class TinyMCEAdmin(admin.ModelAdmin):
    class Media:
        js = ('/static/tiny_mce/tiny_mce.js', )

admin.site.register(MyModel, TinyMCEAdmin)

そして、settings.py の設定を忘れないでください

TINYMCE_DEFAULT_CONFIG = {
    # General options
    'mode' : "textareas",
    'theme' : "advanced",
    'plugins' : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave",

    # Theme options
    'theme_advanced_buttons1' : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,fontselect,fontsizeselect,", #fullscreen,code",
    'theme_advanced_buttons2' : "bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,|,forecolor,backcolor",
    #'theme_advanced_buttons3' : "tablecontrols,|,hr,sub,sup,|,charmap",

    'theme_advanced_toolbar_location' : "top",
    'theme_advanced_toolbar_align' : "left",
    'theme_advanced_statusbar_location' : "bottom",
    'theme_advanced_resizing' : 'true',

    #Example content CSS (should be your site CSS)
    #content_css : "/css/style.css",

    'template_external_list_url' : "lists/template_list.js",
    'external_link_list_url' : "lists/link_list.js",
    'external_image_list_url' : "lists/image_list.js",
    'media_external_list_url' : "lists/media_list.js",

    # Style formats
    'style_formats' : [
        {'title' : 'Bold text', 'inline' : 'strong'},
        {'title' : 'Red text', 'inline' : 'span', 'styles' : {'color' : '#ff0000'}},
        {'title' : 'Help', 'inline' : 'strong', 'classes' : 'help'},
        {'title' : 'Table styles'},
        {'title' : 'Table row 1', 'selector' : 'tr', 'classes' : 'tablerow'}
    ],

    'width': '700',
    'height': '400'
}

それ以外は、モデルのテキストフィールドに対してモデル内で HTMLField を必ず使用してください。forms.py で、modelform を使用していない場合は、新しいウィジェットも定義する必要があります。

于 2013-04-21T16:59:43.867 に答える