Django2.1提交后如何获取modelform中的ckeditor字段值?
How to get ckeditor field value in modelform after submit in Django2.1?
- 我已经安装了ckeditor
- 在 urls.py
中放置 "path('ckeditor/', include('ckeditor_uploader.urls')),"
- 在 settings.py
中的 INTALLED_APPS 中放置了“'ckeditor'”
放置
## 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
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
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')
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.
中的数据
- 我已经安装了ckeditor
- 在 urls.py 中放置 "path('ckeditor/', include('ckeditor_uploader.urls')),"
- 在 settings.py 中的 INTALLED_APPS 中放置了“'ckeditor'”
放置
## 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
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
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')
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.
中的数据