4

django-tinymce を使用して、以前に TinyMCE を Admin に埋め込むことに成功しました。ただし、フロントエンド形式に埋め込むことはうまくいかないようです。

私はモデルフォームであるフォームを持っています。余分なフィールドは追加されません (使用されるフィールドは「コメント」と「ステートメント」のみで、モデル内に存在します)。そのフォームのテキストエリアフィールド「コメント」で、TinyMCEを使用したいと思います。私は次のことを試しました:

class EntryForm(forms.ModelForm):
    comment = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}, mce_attrs=TINYMCE_USER_CONFIG))

    class Meta:
        model = Entry
        fields = ['statement','comment',]

class EntryForm(forms.ModelForm):
    class Meta:
        model = Entry
        fields = ['statement','comment',]

    def __init__(self, *args, **kwargs):
        super(EntryForm, self).__init__(*args, **kwargs)
        self.fields['comment'].widget = TinyMCE(attrs={'cols': 80, 'rows': 15}, mce_attrs=TINYMCE_USER_CONFIG,)

class EntryForm(forms.ModelForm):

    class Meta:
        model = Entry
        fields = ['statement','comment',]

    class Media:
        js = ('/media/tinymce/jscripts/tiny_mce/tiny_mce.js',
                '/sitemedia/js/tinymce_setup.js',)

私が入れたHEADhtmlタグで{{ form.media }}(フォームはformビューとテンプレートで呼び出されます)。また、管理者には Grappelli と Filebrowser を使用しています。

誰かが私が欠けているもの、またはこれを機能させるプロセスを説明してもらえますか? どうもありがとう!

4

2 に答える 2

5

私自身の質問に答えるには、最後のオプションが機能します。

問題は、「/sitemdia/js/tinymce_setup.js」が Grappelli セットアップ ファイルであるということでした。これは、管理者のみが使用する必要があります。そのビットを削除したので、最終的には次のようになりました。

class Media:
    js = ('/media/tinymce/jscripts/tiny_mce/tiny_mce.js',
            '',)

そして、私が追加したヘッダーで

<script type="text/javascript">
        tinyMCE.init({
                mode: "textareas",
                theme: "simple"
        });
</script>

セットアップ ファイルを削除する代わりに、機能する別のファイルを挿入することもできます (たとえば、コードの tinyMCE.init ビットを含む)。

それはトリックを行う必要があります:)。

于 2010-09-07T15:34:35.277 に答える
0

丸一日検索して試してみた結果、TinyMCE の CDN を通じて提供される Django アプリで tinyMCE のフロントエンド バージョンを使用する方がはるかに簡単であることがわかりました。

コンテンツは HTML タグで保存され、html タグでユーザーに表示できます。

私は解決策をできるだけ一般的なものにしようとしました。つまり、javascript を移動して参照する必要があります。フロントエンドの wysiwyg があなたよりも多くの人によって使用される場合は、インデックスの |safe をクリーニング関数に変更して、セキュリティを確保し、不要なコード ハッキングを防止する必要があります。

TinyMCE をレンダリングするためのフロントエンド CDN であるため、バックエンドのインストールは「必要ありません」。

CDN へのリンク https://www.tinymce.com/download/

索引.html

    {% load staticfiles %}
<!-- <link rel="stylesheet" type="text/css" href="{% static 'wys/style.css' %}" /> -->
<!DOCTYPE html>
<html>
<head>
  <!-- Load TinyMCE from CDN -->
  <script src="//cdn.tinymce.com/4/tinymce.js"></script>
<!-- Set preference of what should be visible on init -->
<script>tinymce.init({
      selector: '#foo',
      height: 200,
      theme: 'modern',
      plugins: [
        'advlist autolink lists link image charmap print preview hr anchor pagebreak',
        'searchreplace wordcount visualblocks visualchars code fullscreen',
        'insertdatetime media nonbreaking save table contextmenu directionality',
        'emoticons template paste textcolor colorpicker textpattern imagetools codesample toc'
      ],
      toolbar1: 'undo redo | insert | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',
      toolbar2: 'print preview media | forecolor backcolor emoticons | codesample',
      image_advtab: true,
      templates: [
        { title: 'Test template 1', content: 'Test 1' },
        { title: 'Test template 2', content: 'Test 2' }
      ],
      content_css: [
        '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i',
        '//www.tinymce.com/css/codepen.min.css'
      ]
     });
    </script>
    </head>



    <body>
    <h1>This is the homepage</h1>

      <h1>Below Are 2 Form Areas</h1>
    <form method="GET">
        Question: <input type="text" id="foo" name="search"><br/><br/><br/><br/><br/>
        Name: <input type="text"  id="bar" name="name"><br/><br/><br/><br/><br/><br/>
        <input type="submit" value="Submit" />
    </form><br/><br/>



    <h3>Display of question</h3>
    {% for question in questions %}
      <p>{{ question.query|safe}}</p>
      <p>{{ question.user_id|safe}}</p>
    {% endfor %}

    </body>

ビュー.py

from django.shortcuts import render
from .models import Queries

def MainHomePage(request):
    questions=None
    if request.GET.get('search'):
        search = request.GET.get('search')
        questions = Queries.objects.filter(query__icontains=search)

        name = request.GET.get('name')
        query = Queries.objects.create(query=search, user_id=name)
        query.save()

    return render(request, 'wys/index.html',{
        'questions': questions,
    })

アプリの urls.py

from django.conf.urls import url

from . import views


app_name = 'wys'
urlpatterns = [
    url(r'^', views.MainHomePage, name='index'),
    # url(r'^', views.MainHomePage, name='index'),
]
于 2016-12-20T23:56:24.067 に答える