我一直在尝试使用Django Rich text field使用Django中的富文本字段将数据插入数据库中就目前而言,我已经能够让表单上的字段正常工作,但是当我尝试使用ModelFrom将该字段链接到我的模型以及其他所有列时,我就没有运气了。此表单位于与管理面板完全分开的面板上,在此面板上可以正常工作。
我的模型已设置为接受表格。
class Vulnerability(models.Model):
title = models.CharField(max_length=200, null=True)
CVSS = models.DecimalField(max_digits=2, decimal_places=1, null=True)
summary = RichTextField(blank=True)
remediation = RichTextField(blank=True)
impact = RichTextField(blank=True)
References = RichTextField(blank=True)
CVE = models.CharField(max_length=30, null=True)
Software = models.CharField(max_length=100, null=True)
method = RichTextField(blank=True)
Tags = models.CharField(null=True, max_length=200)
我的forms.py为该字段设置为使用正确的小部件(这可能是问题所在)我不完全确定如何以这种方式设置富文本字段,并且在文档中找不到它。
class vulnform(ModelForm):
class Meta:
model = Vulnerability
fields = ['Tags', 'CVSS', 'CVE', 'Software', 'title','summary']
widgets = {
'title': TextInput(attrs={'class': 'form-control'}),
'CVE': TextInput(attrs={'class': 'form-control'}),
'Software': TextInput(attrs={'class': 'form-control'}),
'Tags': TextInput(attrs={'class': 'form-control'}),
'CVSS': NumberInput(attrs={'class': 'form-control','max':10,'min':0}),
'summary' : RichTextWidget()
}
我的观点。 py看起来像这样:
class Dashboard(TemplateView): template_name ='vuln_pages / Create_Vuln.html'
def get(self, request):
Outform = {
# 'Remediation': Remediation,
#'References': References,
#'Impact': impactform,
'vulnform': vulnform,
}
return render(request, self.template_name, Outform)
在显示时,其他字段将正确渲染。我在我的模板中渲染它们,如下所示:
<div class="col-lg-3">
<div class="form-group">
{{ vulnform.CVE }}
</div>
</div>
并且正在尝试像这样渲染富文本框
{{ vulnform.summary }}
我以前曾经让它们工作过,但是当数据与form.py中的所有其他列都在一个单独的类中时,我担心当我尝试从发布请求中保存它们时,它们会保存在不同的行中在数据库中。
当我将输入框放入模板HTML时,它会在HTML中呈现一个文本框,但似乎没有为富文本框加载任何JS。
<textarea name="summary" cols="40" rows="10" class="djrichtextfield" id="id_summary"></textarea>
我已尝试将javascript手动链接到页面,但是没有用。
通常,您需要在表单模板的顶部添加{{ vulnform.media }}
之类的内容。在此插入所需的CSS和JS以正确呈现表单。我尝试查看该特定的回购协议,但令人惊讶的是,它并不能解释这一点。
将我的插件切换为:django-ckeditor一切正常。插件似乎有问题。