首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-tinyMCE提交按钮不工作

Django-tinyMCE提交按钮不工作
EN

Stack Overflow用户
提问于 2016-08-17 20:54:22
回答 4查看 942关注 0票数 0

我已经用django-tinymce包实现了TinyMCE。然而,我的提交按钮在没有TinyMCE的情况下工作得很好,现在已经变得相当无用了,因为一旦所有东西都填好了,我就不能提交表单了。

我可以在TinyMCE中使用Ctrl +S(我偶然发现了这一点),一切都会被正确提交。另外,我可以使用TinyMCE“保存”插件的保存按钮来提交..是否必须配置提交按钮才能使其与TinyMCE一起工作?

模板:

代码语言:javascript
复制
{% 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 %}

views.py

代码语言:javascript
复制
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)⋅

forms.py

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

TinyMCE位于urls.py中,位于INSTALLED_APPS下。

EN

回答 4

Stack Overflow用户

发布于 2019-05-13 05:50:55

我知道这对你来说可能太晚了,但似乎我刚才也遇到了同样的问题,我的解决方案可能会在未来对某些人有所帮助。

您正在使用crispy,它本身包含表单的javascript文件。

因此,django_tinymce/init_tinymce.js将被引用两次。这将中断提交您的内容,因为表单被初始化了两次。

要解决此问题,您可以删除对{{ form.media }}的调用。

票数 1
EN

Stack Overflow用户

发布于 2017-08-28 03:56:15

我也遇到过类似的问题,并了解到这与TinyMCE处理文本区域的方式有关。下面的初始化脚本适用于我:

代码语言:javascript
复制
<script>
tinymce.init({
    selector:'.editor',
    setup: function (editor) {
        editor.on('submit', function (e) {
            editor.save();
        });
    }
 });
</script>
票数 0
EN

Stack Overflow用户

发布于 2017-09-01 21:19:36

@artifex_knowledge answers很有意义,而且很管用。在此基础上,除了在submit (或change)上调用editor.save()之外,请记住,如果用户不填写文本区域,他们将无法提交表单,但不会显示this field is required错误消息。

这是因为文本区域字段(在本例中为wiki_page)在默认情况下是必需的,因此在html中它将被呈现为required。但是TinyMCE隐藏了文本区(并将其替换为iframe :( ),所以如果您尝试提交包含空的必填项的表单,它不会这样做,但错误消息将保持隐藏状态。

(一种可能的解决方案是使用JS删除必需的属性,稍后在django中检查它)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38997237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档