0

TinyMCE を django-tinymce パッケージで実装しました。ただし、TinyMCE がなくても正常に機能していた送信ボタンは、すべてが入力されるとフォームを送信できないため、かなり役に立たなくなりました。

TinyMCE 内で Ctrl + S を使用でき (偶然発見しました)、すべてが正しく送信されます。また、TinyMCE の「保存」プラグインの保存ボタンを使用して送信することもできます。TinyMCE で機能するように送信ボタンを構成する必要がありますか?

テンプレート:

{% extends 'medisearch/header.html' %}
{% load crispy_forms_tags %}
{% block header %}
{{ form.media }}
{% endblock %}
{% block content %}
▷⋅⋅⋅⋅⋅⋅⋅<form action="{{ url }}" method="post">
▷⋅⋅⋅⋅⋅⋅⋅   <div class="form-group">
▷⋅⋅⋅⋅⋅⋅⋅    {% csrf_token %}
▷⋅⋅⋅⋅⋅⋅⋅    {{ form|crispy }}
▷⋅⋅⋅⋅⋅⋅⋅  </div>
▷⋅⋅⋅⋅⋅⋅⋅  <input type="submit" class="btn btn-primary" value="Speichern" />
▷⋅⋅⋅⋅⋅⋅⋅</form>
{% endblock %}

ビュー.py

class EntryDetail(DetailView):
    model = Mediwiki
    slug_field = 'non_proprietary_name'
    template_name = 'mediwiki/entry.html'

class MediwikiForm(FormView):
    template_name = 'mediwiki/create.html'
    form_class = MediwikiForm⋅
    success_url = "/" #TODO user get's redirected to page he's created⋅

    def form_valid(self, form):
        form.save()
        return super(MediwikiForm, self).form_valid(form)

class EntryDisplay(View):
    def get(self, request, *args, **kwargs):
        try:
            view = EntryDetail.as_view()
            return view(request, *args, **kwargs)
        except Http404: # If there's no entry in db:
            if check_user_editor(request.user) == True:
                view = MediwikiForm.as_view()
                return view(request, *args, **kwargs)
            else:
                pass
    def post(self, request, *args, **kwargs):
        view = MediwikiForm.as_view()
        return view(request, *args, **kwargs)⋅

フォーム.py

class MediwikiForm(ModelForm):
    wiki_page = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
    class Meta:
        model = Mediwiki⋅
        fields = '__all__'

urls.pyTinyMCEはINSTALLED_APPS..

4

4 に答える 4

1

おそらく手遅れであることはわかっていますが、同じ問題が発生したようです.今、私の解決策は将来誰かを助けるかもしれません.

クリスピーを使用しています。これには、フォームのjavascriptファイルが含まれています。

したがって、django_tinymce/init_tinymce.js は 2 回参照されます。フォームが 2 回初期化されるため、これによりコンテンツの送信が中断されます。

これを修正するには、{{ form.media }} の呼び出しを削除するだけです。

于 2019-05-12T21:50:54.950 に答える
0

同様の問題があり、TinyMCE がテキスト領域を処理する方法に関係していることを知りました。次のinitスクリプトが機能しました:

<script>
tinymce.init({
    selector:'.editor',
    setup: function (editor) {
        editor.on('submit', function (e) {
            editor.save();
        });
    }
 });
</script>
于 2017-08-27T19:56:15.493 に答える