如何在 Django 中使用 ModelForm 插入富文本框数据?
How to insert Rich text box data using ModelForm in Django?
我一直在尝试使用 Django Rich text field 在 Django 中使用富文本字段将数据插入数据库
就目前而言,我已经能够让该字段在我的表单上工作没有问题,但是当我尝试使用 ModelFrom 和所有其他列 link 它到我的模型时,我没有运气。
此表单位于与管理面板完全分开的面板上,在管理面板中它工作得很好。
我的模型设置为接受表格。
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)
my 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 仪表板(模板视图):
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)
在正确显示 from 中的其他字段时。我像这样在我的模板中渲染它们:
<div class="col-lg-3">
<div class="form-group">
{{ vulnform.CVE }}
</div>
</div>
并且正在尝试像这样渲染富文本框
{{ vulnform.summary }}
我以前让它们工作过,但是当数据与 formform.py 中的所有其他列分开 class 时,我担心当我尝试将它们从 formform.py 中保存时post 请求将它们保存在数据库中的不同行中。
当我将输入框放入我的模板 HTML 时,它会在 HTML 中呈现一个文本框,但似乎没有为富文本框加载任何 JS。
<textarea name="summary" cols="40" rows="10" class="djrichtextfield" id="id_summary"></textarea>
我已经尝试 link 将 javascript 手动发送到页面,但没有成功。
通常您需要在表单模板顶部添加类似 {{ vulnform.media }}
的内容。这就是它插入所需的 CSS 和 JS 以正确呈现表单的地方。我试着查看那个特定的回购协议,但令人惊讶的是它并没有解释这一点。
Django docs mention how form/widget media is added to a form and then how to add it to the template.
将我的插件切换到 :
django-ckeditor
一切正常。
这似乎是插件的问题。
in template add
<div class="col-lg-3">
<div class="form-group">
{{ vulnform.CVE }}
</div>
</div>
{{ vulnform.summary }}
{{ vulnform.media }} #Here
我一直在尝试使用 Django Rich text field 在 Django 中使用富文本字段将数据插入数据库 就目前而言,我已经能够让该字段在我的表单上工作没有问题,但是当我尝试使用 ModelFrom 和所有其他列 link 它到我的模型时,我没有运气。 此表单位于与管理面板完全分开的面板上,在管理面板中它工作得很好。
我的模型设置为接受表格。
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)
my 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 仪表板(模板视图): 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)
在正确显示 from 中的其他字段时。我像这样在我的模板中渲染它们:
<div class="col-lg-3">
<div class="form-group">
{{ vulnform.CVE }}
</div>
</div>
并且正在尝试像这样渲染富文本框
{{ vulnform.summary }}
我以前让它们工作过,但是当数据与 formform.py 中的所有其他列分开 class 时,我担心当我尝试将它们从 formform.py 中保存时post 请求将它们保存在数据库中的不同行中。
当我将输入框放入我的模板 HTML 时,它会在 HTML 中呈现一个文本框,但似乎没有为富文本框加载任何 JS。
<textarea name="summary" cols="40" rows="10" class="djrichtextfield" id="id_summary"></textarea>
我已经尝试 link 将 javascript 手动发送到页面,但没有成功。
通常您需要在表单模板顶部添加类似 {{ vulnform.media }}
的内容。这就是它插入所需的 CSS 和 JS 以正确呈现表单的地方。我试着查看那个特定的回购协议,但令人惊讶的是它并没有解释这一点。
Django docs mention how form/widget media is added to a form and then how to add it to the template.
将我的插件切换到 : django-ckeditor 一切正常。 这似乎是插件的问题。
in template add
<div class="col-lg-3">
<div class="form-group">
{{ vulnform.CVE }}
</div>
</div>
{{ vulnform.summary }}
{{ vulnform.media }} #Here