如何将绑定的Django模型表单呈现为HTML安全?

时间:2019-08-16 16:25:53

标签: django django-models django-forms

Textarea has plain text instead of HTML我正在尝试返回一个绑定表单,该表单已被修改并在其中插入了任意文本和HTML。我已经进行了一些研究,并且能够成功地将某些任意文本插入到绑定表单中,但是我还没有找到将注入的HTML呈现为HTML的任何方法。它呈现为纯文本。我如何实现我的目标?

这是代码:

# views.py

def multi_text(request):
    if request.method == 'POST':
        data = request.POST.copy()
        form = MultilineForm(data=data)
        if form.is_valid():
            cd = form.cleaned_data
            form.data['text'] = '<i>Hello hello</i>'
            return render(request, 'multi_text.html', {'form': form})
    else:
        form = MultilineForm()
    return render(request, 'multi_text.html', {'form': form})

# forms.py

class MultilineForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['text'].widget.attrs.update({'class': 'form-control'}, verbose_name='Text', placeholder='Type your text here...')
        self.data['text'] = '...'
    class Meta:
        model = Multiline
        fields = ['text']
        widgets = {
            'text': Textarea(attrs={}),
        }

# template.html

<form method="post" action="" class="form">
        {% csrf_token %}
        {{ form.text.as_widget }}
        <span class="input-group-btn">
        <input type="submit" value="Check" class="form-control btn btn-primary">
        </span>         
    </form>

0 个答案:

没有答案