Django2.1提交后如何获取modelform中的ckeditor字段值?

How to get ckeditor field value in modelform after submit in Django2.1?

  1. 我已经安装了ckeditor
  2. 在 urls.py
  3. 中放置 "path('ckeditor/', include('ckeditor_uploader.urls')),"
  4. 在 settings.py
  5. 中的 INTALLED_APPS 中放置了“'ckeditor'”
  6. 放置

     ##  CKEDITOR CONFIGURATION ##
     ####################################
     CKEDITOR_JQUERY_URL = 'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js'
    
     CKEDITOR_UPLOAD_PATH = 'uploads/help/'
     CKEDITOR_IMAGE_BACKEND = "pillow"
    
     CKEDITOR_CONFIGS = {
            'default': {
                  'toolbar': None,
                  'height':100,
                  'width':500,
             },
     }
    
    ###################################
    

    在文件末尾 settings.py

  7. models.py :

    from ckeditor.fields import RichTextField
    from django.db import models
    class Help(models.Model):
       title = models.CharField(max_length=255)
       description = RichTextField(blank=True, null=True) #models.TextField()
       class Meta:
           managed = False
           db_table = 'help'
       def __str__(self):
           return self.title
    
  8. forms.py

    from ckeditor.widgets import CKEditorWidget
    from django import forms
    class HelpForm(ModelForm):
        description = forms.CharField(widget=CKEditorWidget())
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
    
        class Meta:
            model = Help
            exclude = ('created_by', 'updated_by', 'created', 'updated')
    
  9. help.html

    {% load i18n static widget_tweaks %}
    <form id="newFrm" method="post" novalidate>
    {% csrf_token %}
    {{ form.media }}
    
      <div class="col-lg-6 col-md-8 col-sm-12 col-xs-24">
        <div class="form-group">
          <label for="">description <span class="required">*</span></label>
           {% if form.title.errors %}
            {% render_field form.description class="form-control ckeditor error" placeholder="Description" %}
            <div class="error-msg show  form-error">
            {{ form.description.errors}}
            </div> 
            {% else %}
            {% render_field form.description class="form-control ckeditor" placeholder="Description" %}
            {% endif %} 
        </div>
      </div>
    

问题:在表单提交后(在 views.py 中),我没有得到描述的 POST 值。任何帮助将不胜感激。提前致谢。

我找到了解决方案。 请将以下脚本放入您的代码中。

    for (var i in CKEDITOR.instances) {
            CKEDITOR.instances[i].on('change', function() { 
                    CKEDITOR.instances[i].updateElement() });
    }

这段代码会将ckeditor的原始数据更新到相关的textarea中。 现在提交表单,您将获得 POST.

中的数据