Django表单,html标签在前端显示为文本

csga3l58  于 2023-01-21  发布在  Go
关注(0)|答案(2)|浏览(133)

<div class="form-group">
<span class="form-label">First Name</span>
<input class="form-control" type="{{ form.firstname }}" placeholder="Enter Employees First Name">
</div>

我该如何解决这个问题?所有的占位符值和“〉”都显示为文本。我做错了什么?

oaxa6hgo

oaxa6hgo1#

这不起作用的原因是使用{{form.firstname}}会呈现一个完整的输入字段。如果你查看源代码,你会发现类似于下面的内容:

<input class="form-control" type="<input type="text" name="first_name" id="id_first_name">" placeholder="Enter Employees First Name">

有些浏览器足够智能,可以正确地呈现嵌入的<input>字段,这就是为什么你只剩下一个表单字段和它周围的其他东西。
要真正实现所需的功能,需要将占位符作为小部件应用到forms.py中,我不知道表单的确切外观,所以我只是使用forms.ModelForm展示了它的一个版本:

class UpdatePersonForm(forms.ModelForm):
    class Meta:
        model = Person
        widgets = {
            'first_name': TextInput(attrs={'placeholder': 'Enter Employees First Name'}),
        }

    def __init__(self, *args, **kwargs):
        super(UpdatePersonForm, self).__init__(*args, **kwargs)
        for visible in self.visible_fields():
            visible.field.widget.attrs['class'] = 'form-control'

我还添加了class属性form-control,这样输入字段也将具有该类。
你可以在Django文档中找到更多关于这个的信息
希望我能帮到你。祝你愉快:)

rta7y2nd

rta7y2nd2#

使用|{{form.firstname}中的安全|安全}}或任何地方的标签打印在前端.如果没有比检查你所有的前端的结束标签

相关问题