Bootstrap 4 Django CKEditor未验证引导表单

Bootstrap 4 Django CKEditor未验证引导表单,bootstrap-4,django-forms,ckeditor,Bootstrap 4,Django Forms,Ckeditor,在集成CKEditor和Django表单时,如何正确验证表单是一个问题。 除CKEditor表单外,所有其他表单均正确验证。由于某些原因,当Models.py中的设置为null=False时,CKEditor表单允许提交“空白”。不过,服务器端验证似乎部分起作用,因为在提交时,表单未根据Views.py中的if form.is_valid():语句保存到数据库 **models.py** class Newsletter(models.Model): issue_number = models

在集成CKEditor和Django表单时,如何正确验证表单是一个问题。 除CKEditor表单外,所有其他表单均正确验证。由于某些原因,当Models.py中的设置为null=False时,CKEditor表单允许提交“空白”。不过,服务器端验证似乎部分起作用,因为在提交时,表单未根据Views.py中的if form.is_valid():语句保存到数据库

**models.py**
class Newsletter(models.Model):

issue_number = models.IntegerField(null=True)
title = models.CharField(max_length=200, default="Tiffany's Dynamic Digest")
summary = models.TextField(null=False, blank=False)
title_1 = models.CharField(max_length=30, null=False, blank=False)
image_1 = models.URLField(null=False, blank=False)
body_1 = models.TextField(null=False, blank=False)

**views.py**
def write_newsletter(request):
    if request.method == 'POST':
        form = NewsletterForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect(list_newsletters())

    form = NewsletterForm()
    return render(request, 'newsletter/edit-newsletter.html', {'form': form})

**forms.py**
from ckeditor.widgets import CKEditorWidget

class NewsletterForm(ModelForm):
body_1 = forms.CharField(widget=CKEditorWidget(), required=True)

class Meta:
    model = Newsletter
    fields = ['title',
              'summary',
              'title_1',
              'image_1',
              'body_1'
             ]

    labels = {
            'title_1': _('Title'),
            'image_1': _('Image'),
            'body_1': _('Body')
             }

     widgets = {
        "title": forms.TextInput(attrs={'class': 
         'form-control form-title text-center',
         'placeholder': 'Newsletter Header Title'}),
        "summary": forms.Textarea(attrs={'placeholder': 'Newsletter Header Summary'}),
        "title_1": forms.TextInput(attrs={'class': 
        'form-control form-title text-center', 'placeholder': 'Title'}),
        "image_1": forms.URLInput(attrs={'placeholder': 'Image url https://'}),
        }

**HTML**
<div class="form_group col-md-6 mb-0">
      {{ form.media }}
      {{ form.body_1|as_crispy_field }}
</div>
**models.py**
班级通讯(models.Model):
问题编号=models.IntegerField(null=True)
title=models.CharField(最大长度=200,默认值=“Tiffany's Dynamic Digest”)
summary=models.TextField(null=False,blank=False)
title_1=models.CharField(最大长度=30,null=False,blank=False)
image_1=models.URLField(null=False,blank=False)
body_1=models.TextField(null=False,blank=False)
**views.py**
def write_时事通讯(请求):
如果request.method==“POST”:
表单=新闻稿表单(request.POST)
如果form.is_有效():
form.save()
返回重定向(列出新闻稿()
表单=新闻稿表单()
返回呈现(请求'newsletter/editnewsletter.html',{'form':form})
**forms.py**
从ckeditor.widgets导入CKEditorWidget
课程通讯表格(模型表格):
body_1=forms.CharField(widget=CKEditorWidget(),必需=True)
类元:
模型=时事通讯
字段=['title',
"摘要",,
“标题1”,
“图像_1”,
“body_1”
]
标签={
“title_1”:(“title”),
“image_1”:(“image”),
“body_1”:(body)
}
小部件={
“title”:forms.TextInput(attrs={'class':
“表单控件表单标题文本中心”,
“占位符”:“时事通讯标题”}),
“摘要”:forms.Textarea(attrs={'placeholder':'Newsletter Header summary'}),
“title_1”:forms.TextInput(attrs={'class':
“表单控件表单标题文本中心”、“占位符”:“标题”}),
“image_1”:forms.URLInput(attrs={'placeholder':'image url https://'}),
}
**HTML**
{{form.media}
{{form.body|1|as_crispy_field}
先谢谢你