簡體   English   中英

如何在 Django 中使用 ModelForm 插入富文本框數據?

[英]How to insert Rich text box data using ModelForm in Django?

我一直在嘗試使用Django 中的富文本字段將數據插入到數據庫中,使用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 看起來像這樣:

類儀表板(模板視圖):模板名稱 = '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 中的所有其他列位於一個單獨的類中時,我擔心當我嘗試從發布請求中保存它們時,它們會被保存在不同的行中數據庫。

當我將輸入框放入模板 HTML 時,它會在 HTML 中呈現一個文本框,但似乎沒有為富文本框加載任何 JS。

<textarea name="summary" cols="40" rows="10" class="djrichtextfield" id="id_summary"></textarea>

我曾嘗試將 javascript 手動鏈接到頁面,但沒有奏效。

通常,您需要在表單模板頂部使用{{ vulnform.media }}之類的內容。 這就是它插入所需的 CSS 和 JS 以正確呈現表單的地方。 我試着查看那個特定的 repo,但令人驚訝的是它並沒有解釋這一點。

Django 文檔提到了如何將表單/小部件媒體添加到表單中,以及如何將其添加到模板中。

將我的插件切換到: django-ckeditor 后一切正常。 這似乎是插件的問題。

in template add 
<div class="col-lg-3">
                            <div class="form-group">
                                {{ vulnform.CVE }}
                            </div>
                        </div>

                                {{ vulnform.summary }}
                                {{ vulnform.media }} #Here

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM